Android 6.0 の変更点

Android 6.0(API レベル 23)には、新機能に加え、さまざまな機能が搭載されています。 API の動作変更に関するものです。このドキュメントのハイライト 理解して考慮しておくべき主な変更点のいくつかを見ていきましょう。

以前に Android 向けにアプリを公開したことがある場合は、 影響するためです

実行時の権限

このリリースでは、新しい権限モデルが導入され、ユーザーが直接管理できるようになりました。 アプリの権限を自動的に管理できます。このモデルにより、ユーザーの目に留まりやすくなり、 アプリ デベロッパーがインストールと自動更新のプロセスを合理化します。 ユーザーはインストール済みのアプリの権限を個別に付与または取り消すことができます。

Android 6.0(API レベル 23)以降をターゲットとするアプリでは、必ず 権限を制御します。アプリに権限が付与されているかどうかを確認するには、 新しい checkSelfPermission() メソッドを呼び出します。権限をリクエストするには、新しい requestPermissions() メソッドを呼び出します。アプリが Android 6.0(API レベル 23)を対象としていない場合でも、 新しい権限モデルが適用されます。

アプリで新しい権限モデルをサポートする方法について詳しくは、以下をご覧ください。 <ph type="x-smartling-placeholder"></ph> システム 権限の使用をご覧ください。アプリへの影響を評価する方法については 権限の使用上の注意をご覧ください。

Doze とアプリ スタンバイ

このリリースでは、アイドル状態のデバイスとアプリ向けに新しい省電力最適化が導入されています。これらの 機能はすべてのアプリに影響するため、これらの新しいモードでアプリを必ずテストしてください。

  • Doze: ユーザーがデバイスを電源から外し、画面がオフの状態で動かないままになっていると、 デバイスがしばらくの間 Doze モードに切り替わると、システム スリープ状態にします。このモードでは、デバイスは定期的に通常の動作を短時間再開します。 アプリが同期可能になり、システムが保留中の処理を実行できるようになります。
  • アプリ スタンバイ: アプリ スタンバイは、アプリがアイドル状態であるとシステムによって判断できるようにするためのものです。 ユーザーがそのアプリを実際に使用していないときに 警告が表示されますこの判定は、ユーザーが特定の操作をしていないときに アプリを一定時間タップする。デバイスを電源から外すと、ネットワークが無効になります。 アイドル状態とみなされたアプリについてはアクセスし、同期とジョブを一時停止します。

これらの省電力の変更の詳細については、 Doze とアプリ スタンバイの最適化

Apache HTTP クライアントの削除

Android 6.0 リリースでは、Apache HTTP クライアントのサポートが削除されました。アプリでこのクライアントを使用していて、 Android 2.3(API レベル 9)以降をターゲットとしている場合は、HttpURLConnection クラスを使用します。 してください。この API は透過的な圧縮によりネットワークの使用量を減らすため、より効率的です 消費電力を最小限に抑えられますApache HTTP API を引き続き使用するには、 まず、build.gradle ファイルで次のコンパイル時依存関係を宣言する必要があります。

android {
    useLibrary 'org.apache.http.legacy'
}

BoringSSL

Android は、OpenSSL から BoringSSL ライブラリです。アプリで Android NDK を使用している場合は、暗号ライブラリにリンクしないでください。 NDK API の一部ではないファイル(libcrypto.solibssl.so など)。これらの ライブラリは公開 API ではなく、リリースやデバイスを問わず予告なく変更または中断される可能性があります。 また、セキュリティの脆弱性にさらされる可能性もあります。代わりに、 JNI 経由で Java 暗号化 API を呼び出すか、または静的に 暗号化ライブラリを使用できます。

Hardware Identifier へのアクセス

ユーザーのデータ保護を強化するために、このリリース以降、Android は デバイスのローカル ハードウェア ID へのプログラムによるアクセスを、 アプリを接続できるようになります。「 WifiInfo.getMacAddress() および BluetoothAdapter.getAddress() 個のメソッド 定数値 02:00:00:00:00:00 を返すようになりました。

Bluetooth スキャンや Wi-Fi スキャンを介して付近の外部デバイスのハードウェア ID にアクセスするには、 アプリに ACCESS_FINE_LOCATION または ACCESS_COARSE_LOCATION 権限:

: Android 6.0(API レベル 23)を搭載しているデバイスが バックグラウンドでの Wi-Fi スキャンや Bluetooth スキャンでは、操作は外部デバイスに 送信元の ID とアクセスしています

通知

このリリースでは、Notification.setLatestEventInfo() メソッドを削除しました。こちらの Notification.Builder クラスを使用して通知を作成します。更新するには、 通知を繰り返す場合は、Notification.Builder インスタンスを再利用します。呼び出し 取得する build() メソッド Notification 個のインスタンスを更新しました。

adb shell dumpsys notification コマンドでは通知テキストが出力されなくなります。 代わりに adb shell dumpsys notification --noredact コマンドを使用してテキストを出力します。 あります。

AudioManager の変更

AudioManager で音量を直接設定するか、特定のストリームをミュートする クラスはサポートされなくなりました。setStreamSolo() メソッドは非推奨となったため、代わりに requestAudioFocus() メソッドを使用してください。同様に、 setStreamMute() メソッド: 非推奨。代わりに adjustStreamVolume() メソッドを呼び出して、direction 値を渡します。 ADJUST_MUTE または ADJUST_UNMUTE

テキストの選択

フローティング ツールバー内に新しいテキスト選択機能が表示されている画面

ユーザーがアプリでテキストを選択したときに、次のようなテキスト選択アクションを表示できるようになりました。 切り取りコピー貼り付けフローティング ツールバー。ユーザー操作の実装は、 のコンテキスト アクションバーを使用します。詳細は、 <ph type="x-smartling-placeholder"></ph> 個々のビューでコンテキスト アクション モードを有効にするをご覧ください。

テキスト選択用のフローティング ツールバーを実装するには、既存の アプリ:

  1. View オブジェクトまたは Activity オブジェクトで、 着信 ActionModestartActionMode(Callback)startActionMode(Callback, ActionMode.TYPE_FLOATING)
  2. ActionMode.Callback の既存の実装を利用して拡張する 代わりに ActionMode.Callback2 を使用してください。
  3. オーバーライドする onGetContentRect() メソッドでコンテンツの Rect オブジェクトの座標を提供する テキスト選択用の四角形など)をビュー内に配置できます。
  4. 長方形の位置が無効になり、この要素のみが無効になる場合は、 invalidateContentRect() メソッドを呼び出します。

<ph type="x-smartling-placeholder"></ph>を使用している場合 Android Support Library リビジョン 22.2 以降のバージョンでは、フローティング ツールバーはサポートされないことに注意してください。 下位互換性があり、appcompat が ActionMode オブジェクトに対して あります。これにより、フローティング ツールバーが表示されなくなります。有効にするには ActionMode のサポートを AppCompatActivity、呼び出し getDelegate() の後に呼び出します。 返品日: setHandleNativeActionModesEnabled() AppCompatDelegate オブジェクトを作成し、 パラメータを false に設定します。この呼び出しは、ActionMode オブジェクトの制御を返し、 説明します。Android 6.0(API レベル 23)を搭載するデバイスでは、これによりフレームワークが ActionBar またはフローティング ツールバー モード(実行中のデバイス使用時) Android 5.1(API レベル 22)以前では、ActionBar モードのみ サポートされません。

ブラウザ ブックマークの変更

このリリースでは、グローバル ブックマークのサポートを終了します。「 android.provider.Browser.getAllBookmarks() および android.provider.Browser.saveBookmark() メソッドが削除されました。同様に、READ_HISTORY_BOOKMARKSWRITE_HISTORY_BOOKMARKS 削除されます。Android 6.0(API レベル 23)以降をターゲットとしているアプリについては、 グローバル プロバイダのブックマークを使用するか、ブックマークの権限を使用します。その代わりに、アプリには 内部でブックマークします。

Android Keystore の変更点

このリリースでは、 Android Keystore プロバイダのサポート終了 動的検索広告。ECDSA は引き続きサポートされます。

保存データの暗号化が不要な鍵は、セキュアロック画面でも削除されません ユーザーまたはデバイス管理者などによって無効化またはリセットされた。必要な鍵は 保存データの暗号化は削除されます。

Wi-Fi とネットワークの変更

このリリースでは、Wi-Fi API とネットワーキング API に対して以下の動作変更が導入されました。

  • アプリで WifiConfiguration オブジェクトの状態のみを変更できるようになりました 作成する必要があります変更または削除できません ユーザーまたは他のアプリによって作成された WifiConfiguration オブジェクト。
  • 以前は、アプリが特定の Wi-Fi ネットワークに接続するために enableNetwork() は、 disableAllOthers=true設定、デバイスは他のネットワークから切断されました モバイルデータで接続します。このリリースでは、デバイスがこのような他のネットワークから切断されなくなりました。条件 アプリのtargetSdkVersion“20” 以下で、選択したものに固定されています Wi-Fi ネットワーク。アプリの targetSdkVersion“21” 以上の場合は、 マルチネットワーク API( openConnection(), bindSocket()、および bindProcessToNetwork() メソッドなど)を呼び出して、選択したネットワークでネットワーク トラフィックが送信されるようにします。

カメラサービスの変更

このリリースでは、カメラサービスの共有リソースにアクセスするためのモデルが変更されました。 以前の「先着順」のアクセスモデルから、優先度の高いアクセス、 プロセスが好まれます。サービスの動作の変更点は次のとおりです。

  • カメラ サブシステムのリソース(カメラデバイスの起動や構成など)へのアクセスは、 クライアント申請プロセスの「優先度」に基づいて付与されます。アプリケーション プロセス 通常、ユーザーに表示されるアクティビティやフォアグラウンドのアクティビティの優先度が高いため、カメラリソースが 信頼性の向上につながります
  • 優先度の低いアプリのアクティブなカメラ クライアントは、優先度の高いアプリの場合に「強制排除」されることがある カメラの使用を試行します。非推奨の Camera API では、 その結果 onError() は クライアントを呼び出すことができます。Camera2 API では、次のようになります。 onDisconnected() クライアントのために呼び出されます。
  • 適切なカメラ ハードウェアを搭載したデバイスでは、個別のアプリ プロセスを使用して次のことが可能です。 カメラデバイスを個別に起動して同時に使用できます。ただし、マルチプロセスの使用は 同時アクセスによってサービスのパフォーマンスや機能の大幅な低下が 検出されたため、カメラサービスによって許可されなくなります。この変更 他のアプリが直接実行されていなくても、優先度の低いクライアントの「エビクション」が発生する可能性がある アクセスしようと試みます。
  • 現在のユーザーを変更すると、以前のユーザー アカウントが所有するアプリでカメラ クライアントがアクティブになる 強制排除されます。カメラへのアクセスは、現在のデバイスのユーザーが所有するユーザー プロフィールに限定されます。 実質的には、たとえば「ゲスト」アカウントを実行したままにすることはできません ユーザーが別のアカウントに切り替えたときにカメラ サブシステムを使用するプロセスです。

ランタイム

ART ランタイムは、このアプリケーションのアクセスルールを適切に実装し、 newInstance() メソッドを使用します。この 変更により、以前のバージョンで Dalvik がアクセスルールを誤ってチェックしていた問題を修正しました。 アプリで newInstance() メソッドと自分 アクセス チェックをオーバーライドするには、 入力と setAccessible() メソッド パラメータを true に設定します。アプリで v7 appcompat ライブラリまたは v7 recyclerview ライブラリ、 これらのライブラリの最新バージョンを使用するには、アプリを更新する必要があります。それ以外の場合は、 XML から参照されるカスタムクラスは、クラス コンストラクタにアクセスできるように更新されます。

このリリースでは、ダイナミック リンカーの動作を更新しました。これでダイナミック リンカーが ライブラリの soname とそのパスの違い () 公開バグ 6670 など)を確認し、「soname」で検索できるようになりました。 確認します。以前動作していた、不正な DT_NEEDED エントリがあるアプリ (通常はビルドマシンのファイル システム上の絶対パス)は、読み込み時に失敗することがあります。

dlopen(3) RTLD_LOCAL フラグが正しく実装されました。注: RTLD_LOCAL がデフォルトであるため、明示的に使用しなかった dlopen(3) の呼び出し RTLD_LOCAL が影響を受けます(アプリで RTLD_GLOBAL を明示的に使用している場合を除きます)。あり RTLD_LOCAL。後で呼び出すことにより読み込まれたライブラリでは、シンボルが使用できなくなります。 dlopen(3)DT_NEEDED エントリで参照されていません)。

以前のバージョンの Android では、アプリが テキストの再配置を行うと、警告は表示されますが、ライブラリの読み込みは許可されました。 このリリース以降、アプリのターゲット SDK バージョンが 23 の場合、このライブラリはシステムによって拒否されます 以上です。ライブラリの読み込みに失敗した場合に検出できるように、アプリは dlopen(3) エラーと、dlerror(3) で報告された問題の説明テキストを含む ことができます。テキストの再配置の処理について詳しくは、こちらの ガイドをご覧ください。

APK の検証

プラットフォームでより厳密な APK の検証が実行されるようになりました。APK が破損しているとみなされるのは、 マニフェストでは宣言されているが APK 自体には存在しない。次のいずれかの場合は、APK の再署名が必要です。 削除されます。

USB 接続

USB ポートを介したデバイス接続は、デフォルトで充電専用モードに設定されるようになりました。アクセス方法 そのデバイスとそのコンテンツを USB 接続で許可する必要がある場合、ユーザーは やり取りできますアプリが USB ポートを介したユーザー操作をサポートしている場合は、 インタラクションを明示的に有効にする必要があることに留意してください。

Android for Work の変更点

このリリースでは、Android for Work に関して以下の動作変更が含まれています。

  • 個人用での仕事用の連絡先。Google 電話アプリ 通話履歴に仕事用の連絡先が表示されるようになりました。 設定 setCrossProfileCallerIdDisabled() true に設定すると、Google 電話アプリの通話履歴で仕事用プロファイルの連絡先が非表示になります。仕事用連絡先 Bluetooth 経由でデバイスに個人の連絡先とともに表示されるのは、 setBluetoothContactSharingDisabled()false に設定します。デフォルトでは true に設定されています。
  • Wi-Fi 設定の削除: プロファイル所有者が追加した Wi-Fi 設定 (たとえば、 addNetwork() メソッドなど)も、仕事用プロファイルが削除されると削除されます。
  • Wi-Fi 設定のロックダウン: 次の場合、ユーザーはアクティブなデバイス所有者を変更、削除できなくなります。 WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN がゼロ以外です。 ユーザーは引き続き独自の Wi-Fi 設定を作成、変更できます。アクティブなデバイス 所有者には、以下を含む Wi-Fi 設定を編集または削除できる権限があります。 作成していないリソースです
  • Google アカウントの追加により Device Policy Controller をダウンロードする: Google アカウントが Device Policy Controller(DPC)アプリによる管理が必要なアカウントがデバイスに追加されている 外部鍵の場合、アカウント追加フローでユーザーに Cloud Shell を 適切な WPC ですこの動作は、 [設定] >アカウントと、初期デバイス設定ウィザードで確認できます。
  • 特定の DevicePolicyManager API の動作の変更: <ph type="x-smartling-placeholder">
      </ph>
    • 呼び出しの setCameraDisabled() メソッドは、呼び出し元のユーザーに対してのみカメラに影響します。管理対象プロファイルから呼び出しても、 プライマリ ユーザーで実行されているカメラアプリに影響します。
    • また、 setKeyguardDisabledFeatures() メソッドが、デバイス所有者だけでなくプロファイル所有者にも利用できるようになりました。
    • プロファイル所有者は、次のキーガード制限を設定できます。 <ph type="x-smartling-placeholder">
    • DevicePolicyManager.createAndInitializeUser() メソッドと DevicePolicyManager.createUser() メソッドのサポートが終了しました。
    • setScreenCaptureDisabled() メソッドは、特定ユーザーのアプリがフォアグラウンドにあるときに、アシスト構造をブロックするようになりました。
    • EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM デフォルトは SHA-256 になりました。下位互換性を確保するため、SHA-1 は引き続きサポートされますが、削除される予定です 使用できます。 EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM SHA-256 のみを受け入れるようになりました。
    • Android 6.0(API レベル 23)にあったデバイス初期化 API を削除しました。
    • EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS が削除されたため NFC バンプ 初期状態にリセットされた保護されたデバイスをプログラムでロック解除することはできません。
    • EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE を使用できるようになりました 管理対象デバイスの NFC プロビジョニング時にデバイス所有者アプリにデータを渡すための追加の情報です。
    • Android for Work API は、仕事用プロファイル、 多岐にわたります。新しい DevicePolicyManager 権限 API ではサポートされない M 以前のアプリに影響する可能性があります。
    • ユーザーがセットアップ フローの同期部分を終了したときに、 ACTION_PROVISION_MANAGED_PROFILE または ACTION_PROVISION_MANAGED_DEVICE インテント、つまりシステム RESULT_CANCELED 結果コードを返すようになりました。
  • その他の API の変更: <ph type="x-smartling-placeholder">
      </ph>
    • データ使用量: android.app.usage.NetworkUsageStats クラスの名前が変更されました。 NetworkStats
  • 全般設定の変更: <ph type="x-smartling-placeholder">
      </ph>
    • 次の設定は、setGlobalSettings() 経由では行えなくなりました。 <ph type="x-smartling-placeholder">
        </ph>
      • BLUETOOTH_ON
      • DEVELOPMENT_SETTINGS_ENABLED
      • MODE_RINGER
      • NETWORK_PREFERENCE
      • WIFI_ON
    • 次のグローバル設定は、setGlobalSettings() で設定できるようになりました。 <ph type="x-smartling-placeholder">