画面読み取りの制限

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

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

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

  • キャスト アイコンとの関連付けをよりわかりやすく表示します。
  • アクセス可能なデータの機密性に関するより詳細な情報を提供します。
  • 次回以降のキャプチャの開始時にユーザーがダイアログを非表示にできない(つまり、ダイアログが毎回表示される)ようにします。