ラベル apilevel23 の投稿を表示しています。 すべての投稿を表示
ラベル apilevel23 の投稿を表示しています。 すべての投稿を表示

ランタイムパミッションの互換性(1)

Android OS 6.0(Marshmallow)でランタイムパーミッションが導入されましたが、Android OS 6.0端末を持っているのは、ほんの一握りのユーザです。現状ではAndroid6.0以下も考慮しつつアプリケーションを作成していく必要があります。
ランタイムパーミッションの互換性及び注意事項について、以下の二点に関して記載していきたいと思います。

  • 互換モードの動作
  • サポートライブラリ―

互換モードとは


互換モードとは、Android6.0以上の端末で、インストールタイムパーミッションモデルで実行しているアプリケーションが、端末の設定画面から、特定のパーミッションをはく奪された時の事を言います。(わかりにくい)

※「互換モード」という用語は、わかりにくくあまり良くない気もしますが、Developer Previewの説明でそのような記載がGoogleにあり、また良い言葉が見つからないので、互換モードという言葉を以後使いたいと思います。

まず、TargetSdkVersionと実行環境とインストールタイムパーミッションモデルとランタイムパーミッションモデルについておさらいをしたいと思います。


Android6.0でMODE_MULTI_PROCESSが非推奨になったので、プリファレンスのモード指定は、MODE_PRIVATE一択になりました。


Android6.0 (Marshmallow)で、MODE_MULTI_PROCESSが非推奨になりました。
http://developer.android.com/intl/ja/reference/android/content/Context.html#MODE_MULTI_PROCESS

MODE_MULTI_PROCESS、プレファレンスファイルを作成する時などに、getPreferences等のメソッドの引数に指定されるファイルアクセスモードで、AndroidOS3.0の時に新しく追加され、複数のプロセスから同じプレファレンスファイルにアクセスする時に使用します。

今回、以下のような説明が記載されていました。

API Level23で非推奨
MODE_MULTI_PROCESSは、異なったプロセス間での同時修正を両立するためのメカニズムを提供しません。さらにアンドロイドの一部のバージョンでは確実に動作しません。
アプリケーションは、これを使用しないでください。その代りにContentProviderのようなクロスプロセスでのデータ管理手法を使用してください。
....
確実に動作していなかったようです。


Android 6.0で、StickyBoroadcastがDeprecatedになりました。2回目

タオソフトウェア株式会社のブログの方で、昨年「Sticky broadcastsがロリポップで非推奨になりました」というブログを書いたのですが、Android 6.0でもSticky broadcastが非推奨になりました。

何を言っているのかわからないですが....

ContentWrapperのドキュメントを見てたら、StickyBroadcast系の以下のメソッドの記載を見つけてしまいました。
  • removeStickyBroadcast 
  • removeStickyBroadcastAsUser 
  • sendStickyBroadcast 
  • sendStickyBroadcastAsUser 
  • sendStickyOrderedBroadcast 
  • sendStickyOrderedBroadcastAsUser


uses-permission-sdk-23はないやろと思った件

Android M Preview版のドキュメントで<uses-permission-sdk-m>というのがあり、最後までドキュメントから消えなかったのですが、Android 6.0としてリリースされた時にPreviewの説明ページと共になくなりました。良かった、良かったと思っていたら、<uses-permission-sdk-23>という物がこっそりと入っていました。
http://developer.android.com/intl/ja/guide/topics/manifest/uses-permission-sdk23-element.html

    <uses-permission-sdk-23 android:name="string"
            android:maxSdkVersion="integer" />

<uses-permission>は、マニフェスト内でパミッションを利用宣言するに使われます。
<uses-permission-sdk-23>は、一言で言うとAPI Level23(Android 6.0)以上で有効になるパミッションを利用宣言する時に使用します。23未満だと、そんな単語しらないという事でシステムで無視されます。
Android M Previewの時にあった、<uses-permission-sdk-m>が名前変わっただけで残っていました。


プロテクションレベルの歴史とAndroid 6.0での変更点

Android6.0でパミッションモデルの大きな変更が加わりました、その中でINTERNETパミッションのプロテクションレベルがDANGEROUSからNORMALに変更されるなどパミッションのプロテクションレベルの再調整も行われました。

パミッションのプロテクションレベルの変更だけではなく、プロテクションレベルの値の持ち方も変更になりましたので、簡単に解説したいと思います。只開発に役立つか?というと、特殊な領域やっている開発者以外は殆ど役立たない小ネタ知識なので、頭の隅にでもおいておいてもらえたらと思います。

PermissionInfoクラス


PermissionInfoというパミッション情報を纏めるクラスがありますが、Developer Siteを見ると、Android6.0になり記載事項が多くなっておりかなり変更があるように感じられます。実際追加された値も多くなっています。




Android 6.0 - Auto Backup for Apps made simple 翻訳

先日のConfiguring Auto Backup for Apps 翻訳に続き、アンドロイド6.0で新しくなったバックアップ関係の翻訳です。Androiod Developerブログの記事ですが、既に翻訳されている人がいたのに後になって気が付いたんだけど、もったいないのでアップです。
バックアップ関係の翻訳ドキュメントとしてはこれで終わりです。

Auto Backup for Apps made simple

URL:http://android-developers.blogspot.jp/2015/07/auto-backup-for-apps-made-simple.html

Auto Backup for Appsはアプリデータのバックアップとレストアをアプリケーションに
コードを追加することなくシームレスに実現します。
この機能はAndroid M以上の端末で動作します。
アプリでAutoBackupを有効にするにはtargetSdkVersionを23以上に設定するだけです。

Auto Backup for AppsはGoogleによって提供されるものであり、ユーザと開発者両方とも料金は必要ありません。
さらに嬉しいことに、Google Driveに保存されるバックアップデータはユーザの容量としてカウントされません。
しかしデータ通信はユーザのモバイル通信として課金される可能性があるので注意して下さい。