このページでは、Android 11(API レベル 30)で互換性フレームワークに追加された、アプリに影響を与える動作変更について説明します。Android 11 をターゲットとする準備の際に、このリストを開発者向けオプションおよび ADB コマンドと組み合わせて使用し、アプリのテストとデバッグを行うことができます。
ADD_CONTENT_OBSERVER_FLAGS
変更 ID: 150939131
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとするアプリの場合、整数の flags
引数を含む新しい公開 API のオーバーロード onChange(boolean, Uri, int)
があります。
この新しいメソッドは、整数の userId
引数を含む、非 SDK onChange()
のオーバーロードされたメソッドを使用するアプリ用の代替公開 SDK です。
ADMIN_APP_PASSWORD_COMPLEXITY
変更 ID: 123562444
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとする管理アプリの場合、現在割り当てられているパスワードの品質と関連のないパスワード要件がアプリで設定されたらエラーをスローしてください。たとえば、パスワードの品質が DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
に設定されている場合、アプリで最小パスワード長を設定することはできません。この場合、最小パスワード長を設定しようとする前に、アプリはまず setPasswordQuality()
メソッドを呼び出してから、setPasswordMinimumLength()
メソッドを呼び出す必要があります。
さらに、Android 11 をターゲットとする管理アプリがパスワード品質を下げる場合、適用されなくなる既存のパスワード要件はデフォルト値にリセットされます。
APP_DATA_DIRECTORY_ISOLATION
変更 ID: 143937733
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとするアプリは、別のどのアプリについても、そのアプリのターゲット SDK のバージョンにかかわらず、そのアプリのプライベート データのディレクトリあるファイルにアクセスできなくなります。
詳細については、プライベート ディレクトリへのアクセスをご覧ください。
APN_READING_PERMISSION_CHANGE_ID
変更 ID: 124107808
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとするアプリの場合、APN データベースにアクセスするには、Manifest.permission.WRITE_APN_SETTINGS
権限が必須になりました。
この変更について詳しくは、APN データベースへの制限付き読み取りアクセスをご覧ください。
BACKGROUND_RATIONALE_CHANGE_ID
変更 ID: 147316723
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
アプリがバックグラウンドでデバイスの位置情報へのアクセスをリクエストするたびに、有効な根拠を提示することが必須になりました。
この変更について詳しくは、Android 11 での位置情報に関連するプライバシーの変更について説明している、バックグラウンドの位置情報へのアクセスをご覧ください。
CALLBACK_ON_CLEAR_CHANGE
変更 ID: 119147584
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Editor.clear
が呼び出されるたびに、OnSharedPreferenceChangeListener.onSharedPreferenceChanged
へのコールバックが行われ、null
鍵が渡されるようになりました。
この変更について詳しくは、OnSharedPreferenceChangeListener のコールバックの変更をご覧ください。
CALLBACK_ON_MORE_ERROR_CODE_CHANGE
変更 ID: 130595455
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
updateAvailableNetworks(List,
Executor,
Consumer)
と setPreferredOpportunisticDataSubscription(int, boolean, Executor,
Consumer)
のエラーコードが拡張されました。
CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
変更 ID: 148180766
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
これは startWatchingMode(String, String,
AppOpsManager.OnOpChangedListener)
に対する小さな動作変更です。
この変更を行う前、システムは切り替えられる操作に対してコールバックしていました。変更後、システムは実際にリクエストされた操作に対してコールバックするか、操作が指定されていない場合は切り替えられるすべての操作に対してコールバックします。
CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID
変更 ID: 136219221
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとするアプリでは、マニフェスト ファイルに R.attr.foregroundServiceType
がそれぞれ ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
または ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
として設定されている場合のみ、フォアグラウンド サービスがカメラまたはマイクの使用中の機能を受け取ります。Android の以前のバージョンでは、フォアグラウンド サービスは自動的にカメラとマイクの機能を受け取っていました。
この変更について詳しくは、Android 11 でのフォアグラウンド サービスのタイプをご覧ください。
CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK
変更 ID: 128611929
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
アプリはバックグラウンドでカスタム トーストを掲載できなくなりました。ただし、アプリは引き続きバックグラウンドでも Toast.makeText(Context, CharSequence,
int)
メソッドとそのバリアントを使って、トーストを掲載できます。
この変更について詳しくは、カスタム トースト ビューのブロックをご覧ください。
CHANGE_RESTRICT_SAW_INTENT
変更 ID: 135920175
デフォルトの状態: この変更は切り替えられません。互換性フレームワークによってログに記録されるだけです。
android.settings.MANAGE_APP_OVERLAY_PERMISSION
アクションと package
データ URI スキームを使用するインテントは、関連付けられた権限を管理するためのアプリ固有の画面には、ユーザーを移動しなくなりました。代わりに、その権限をリクエストしたことがあるすべてのアプリを管理できる画面に、ユーザーを移動します。
CHANGE_TEXT_TOASTS_IN_THE_SYSTEM
変更 ID: 147798919
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
テキスト トーストは、アプリ内ではなく SystemUI でレンダリングされるようになりました。これにより、アプリがカスタム トーストをバックグラウンドで送信する際の制限の回避が阻止されます。
DEFAULT_SCOPED_STORAGE
変更 ID: 149924527
デフォルトの状態: すべてのアプリに対して有効。
Android 11 をターゲットとするアプリはすべてデフォルトで対象範囲別ストレージを使用するようになり、対象範囲別ストレージをオプトアウトできなくなりました。
ただし、アプリのターゲット SDK のバージョンやマニフェスト フラグの値にかかわらず、この変更をオフにすることで、対象範囲別ストレージを使わずにアプリをテストできます。
Android 11 での対象範囲別ストレージへの変更について詳しくは、Android 11 での Android ストレージへの変更に関するページで対象範囲別ストレージのセクションをご覧ください。
EMPTY_INTENT_ACTION_CATEGORY
変更 ID: 151163173
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとするアプリでは、インテント フィルタの action
または category
が空の文字列の場合、システムがエラーをスローするようになりました。Android 11 より前のプラットフォームにはバグがあり、このような場合にはエラーをスローせずに通過できました。これには、属性が null または欠落している場合は含まれませんのでご注意ください。その場合は常にエラーがスローされます。
FILTER_APPLICATION_QUERY
変更 ID: 135549675
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
アプリがデバイス上の他のアプリの詳細情報を取得する前に、使用する予定のパッケージとインテントを宣言することが必須になりました。このような宣言は、アプリのマニフェストで <queries>
タグを使って行う必要があります。
Android 11 での他のインストール済みアプリに対してクエリや操作を行う方法について詳しくは、パッケージの公開設定に関するプライバシーのページをご覧ください。
FORCE_ENABLE_SCOPED_STORAGE
変更 ID: 132649864
デフォルトの状態: すべてのアプリで無効。
Android 11 をターゲットとするアプリはすべてデフォルトで対象範囲別ストレージを使用するようになり、対象範囲別ストレージをオプトアウトできなくなりました。
ただし、Android 10(API レベル 29)以下を引き続きターゲットとするアプリでは、アプリのターゲット SDK のバージョンやマニフェスト フラグの値にかかわらず、この変更をオンにすることで、対象範囲別ストレージを使ってアプリをテストできます。
Android 11 での対象範囲別ストレージへの変更について詳しくは、Android 11 での Android ストレージへの変更に関するページで対象範囲別ストレージのセクションをご覧ください。
GET_DATA_CONNECTION_STATE_R_VERSION
変更 ID: 148535736
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
PreciseDataConnectionState#getDataConnectionState
の SDK のバージョンを確認するための変更です。
GET_DATA_STATE_R_VERSION
変更 ID: 148534348
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
getDataState()
の SDK のバージョンを確認するための変更です。
GET_PROVIDER_SECURITY_EXCEPTIONS
変更 ID: 150935354
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11(API レベル 30)以上をターゲットとするアプリでは、getProvider(String)
がセキュリティ例外をスローしなくなりました。
GET_TARGET_SDK_VERSION_CODE_CHANGE
変更 ID: 145147528
デフォルトの状態: Android 10(API レベル 29)以上をターゲットとするアプリで有効。
SmsManager.sendResolverResult()
メソッドの SDK のバージョンを確認するための変更です。
GWP_ASAN
変更 ID: 135634846
デフォルトの状態: すべてのアプリで無効。
サンプリングされるネイティブ メモリのバグ検出をアプリで有効にします。
この変更について詳しくは、GWP-ASan ガイドをご覧ください。
HIDE_MAXTARGETSDK_P_HIDDEN_APIS
変更 ID: 149997251
デフォルトの状態: Android 10(API レベル 29)以上をターゲットとするアプリで有効。
Android 10(API レベル 29)以上をターゲットとするアプリでは、Android 10(API レベル 29)の max-target-p
(greylist-max-p
)リストの一部であるすべての非 SDK インターフェースへのアクセス権が削除されます。
HIDE_MAXTARGETSDK_Q_HIDDEN_APIS
変更 ID: 149994052
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11(API レベル 30)以上をターゲットとするアプリでは、Android 11(API レベル 30)の max-target-q
(greylist-max-q
)リストの一部であるすべての非 SDK インターフェースへのアクセス権が削除されます。
この変更について詳しくは、Android 11 でブロックされるようになった非 SDK インターフェースをご覧ください。
LISTEN_CODE_CHANGE
変更 ID: 147600208
デフォルトの状態: Android 10(API レベル 29)以上をターゲットとするアプリで有効。
TelephonyManager.listen(PhoneStateListener,
int)
の SDK のバージョンを確認するための変更です。
MISSING_APP_TAG
変更 ID: 150776642
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとするアプリでは、アプリのマニフェスト ファイルに application
タグまたは instrumentation
タグがない場合にエラーがスローされるようになりました。
NATIVE_HEAP_POINTER_TAGGING
変更 ID: 135754954
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとするアプリの場合、ネイティブ ヒープ割り当てで、最上位バイトはゼロ以外のタグになりました。
詳細については、ヒープポインタのタグ付けをご覧ください。
PHONE_STATE_LISTENER_LIMIT_CHANGE_ID
変更 ID: 150880553
デフォルトの状態: すべてのアプリに対して有効。
Android 11 をターゲットとするアプリでは、任意のプロセスが TelephonyManager.listen(PhoneStateListener, int)
を介して登録できる PhoneStateListener
オブジェクトの数を制限するようになりました。デフォルトの上限は 50 で、リモート デバイス構成の更新で変更できます。
この上限は、問題のあるプロセスが登録しようとしたリスナーの数が多すぎるときに、TelephonyManager.listen(PhoneStateListener, int)
によってスローされる IllegalStateException
を使用して適用されます。
PREVENT_META_REFLECTION_BLACKLIST_ACCESS
変更 ID: 142365358
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとするアプリでは、制限付きの非 SDK インターフェースにアクセスするために追加するリフレクションのレイヤを使用できなくなりました。
PROCESS_CAPABILITY_CHANGE_ID
変更 ID: 136274596
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとするアプリの場合、フラグ Context.BIND_INCLUDE_CAPABILITIES
を使って、クライアント プロセスから、バインドされたサービスに、使用中の機能を渡せるようになりました。
REMOVE_ANDROID_TEST_BASE
変更 ID: 133396946
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとするアプリが、android.test.base
ライブラリのクラスに依存する android.test.runner
に依存しない場合、android.test.base
ライブラリが削除されるようになりました。
REQUEST_ACCESSIBILITY_BUTTON_CHANGE
変更 ID: 136293963
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとするユーザー補助サービスの場合、そのサービスのメタデータ ファイルで FLAG_REQUEST_ACCESSIBILITY_BUTTON
フラグの指定が必須になりました。
それ以外の場合、このフラグは無視されます。
この変更について詳しくは、メタデータ ファイル内でユーザー補助機能ボタンの使用を宣言するをご覧ください。
RESOURCES_ARSC_COMPRESSED
変更 ID: 132742131
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11(API レベル 30)をターゲットとするアプリは、圧縮された resources.arsc
ファイルが含まれている場合、またはこのファイルが 4 バイト境界に揃えられていない場合はインストールできません。
この変更について詳しくは、圧縮されたリソース ファイルをご覧ください。
RESTRICT_STORAGE_ACCESS_FRAMEWORK
変更 ID: 141600225
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとするアプリがストレージ アクセス フレームワーク(SAF)を使用する場合、ACTION_OPEN_DOCUMENT
と ACTION_OPEN_DOCUMENT_TREE
のインテントのアクションを使った一部のディレクトリへのアクセスはできなくなります。この変更について詳しくは、Android 11 のストレージに関連するプライバシーの更新について説明しているページでドキュメントへのアクセス制限のセクションをご覧ください。
SELINUX_LATEST_CHANGES
変更 ID: 143539591
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
この変更は、アプリによる untrusted_app_R-targetSDk SELinux ドメインへのアクセスをコントロールします。
これは、互換性フレームワークの基本的な変更のひとつで、アプリが targetSdkVersion
を条件とするその他の変更を、アプリの targetSDKVersion
を変更せずに切り替えられるようになります。そのため、Android 11 をターゲットとするアプリではこの変更を無効にしないでください。アプリが機能しなくなります。
この変更は、共有ユーザー ID を使用するアプリには影響しません。
THROW_SECURITY_EXCEPTIONS
変更 ID: 147340954
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 より前のバージョンでは、SecurityException
は、権限エラーの場合のみ setEnabled
API によりスローされます。Android 11 ではこのように限定できなくなりました。SecurityException
は呼び出し元に公開されないさまざまな理由で、スローされることがあります。
既存の API の動作を維持するため、Android 11 をターゲットとしないアプリで以前の権限エラーまたはアクター適用エラーが発生した場合、例外は Android 11 より前のソースに存在する IllegalStateException
で強制的に発生します。
USE_SET_LOCATION_ENABLED
変更 ID: 117835097
デフォルトの状態: Android 11(API レベル 30)以上をターゲットとするアプリで有効。
Android 11 をターゲットとする管理アプリでは、DevicePolicyManager.setSecureSetting(ComponentName, String, String)
を使ってサポートの終了した Settings.Secure.LOCATION_MODE
の設定を変更することはできなくなりました。代わりに DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
を使用してください。