画面読み取りの制限

Android 9 以前では、画面バッファのキャプチャ権限(READ_FRAME_BUFFERCAPTURE_VIDEO_OUTPUTCAPTURE_SECURE_VIDEO_OUTPUT)は、署名または特権のうちいずれかの権限を持つアプリに付与されていました。これにより、スクリーンショットのキャプチャやデバイスの画面コンテンツの記録など、シームレスな画面バッファのキャプチャが可能になっていました。

Android 10 以降では、デバイスの画面コンテンツへのサイレント アクセスを防ぐため、特権アプリには動画のキャプチャ権限が付与されません。ユーザーの同意なしのアクセスは制限され、署名権限を持つアプリにのみ許可されます。このサイレント キャプチャ機能に依存する特権アプリを実行するデバイス メーカーは、この要件の影響を受けます。

Android 10 以降では、記載された画面バッファのキャプチャ署名権限がない場合、アプリはユーザーの同意なしに画面バッファをキャプチャできません。必要な権限があることを確認するには、マニフェスト ファイルで前もって記載された署名権限を検索します。影響を受けるすべての特権アプリ(検索で見つかったとおり)を MediaProjectionManager クラスに移行して、サードパーティ製アプリが許可なしで(ただしユーザーの同意に基づいて)画面バッファをキャプチャできるようにします。このフローでは、アプリが起動したときに画面のキャプチャを許可するようユーザーに求めるダイアログが表示されます。Android 10 のダイアログの新機能は次のとおりです。

  • [キャスト] アイコンとの関連をわかりやすく表示します。
  • アクセス可能なデータの機密性に関する詳細情報を提供します。
  • ユーザーがダイアログを非表示にできないようにします。ダイアログは常に表示されます。