Android 11 では、サードパーティのカメラ アプリが画像/ビデオ選択インテント アクションに表示されないようにする変更が実装されています。
アップデート 1 (2020 年 8 月 20 日 @ 06:15 PM ET): Google は開発者向けドキュメントを更新し、Android 11 上のサードパーティ製カメラ アプリが暗黙的な画像/ビデオ インテント アクションに応答できない理由を説明しました。 詳細については、一番下までスクロールしてください。 2020年8月19日に公開された記事を以下に保存します。
Android 11 はアプリの操作方法を変えています サードパーティのカメラアプリ これにより、画像/ビデオ選択インテントにそれらが表示されなくなります。 Android の古いバージョンでは、アプリでユーザーが画像をキャプチャできるようにしたい場合、アプリ内で写真の撮影を実装することができます。 (Android のさまざまなカメラ API を使用) または、専用のカメラ アプリで処理できるインテントを送信して画像をキャプチャすることもできます その代わり。 アプリが後者のオプションを選択した場合、古い Android リリースを使用しているユーザーには、画像をキャプチャするために選択したカメラ アプリを選択するための曖昧さ回避ダイアログが表示されます。 このダイアログには通常、特定のインテントに応答するように記述されている限り、サードパーティのカメラ アプリを含む、ユーザーのデバイスにインストールされているすべてのカメラ アプリが表示されます。 ただし、Android 11 では、開発者が特定のサードパーティ製カメラ アプリを特にターゲットにしない限り、ダイアログにはプリインストールされたストック カメラ アプリのみが含まれます。
この変更は事実上、ほとんどの場合、ユーザーが写真を撮りたいときにサードパーティ製のカメラ アプリを手動で起動する必要があり、サードパーティ製のカメラ アプリが使いにくくなることを意味します。 また、お気に入りのカメラ アプリが他のアプリから起動できなくなったとユーザーが知った場合、ユーザーはサードパーティのカメラ アプリの開発者を非難することになります。 Google は、サードパーティのカメラ アプリが次のインテント アクションに応答しないようにすることで、Android 11 にこの変更を実装しています。
android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE
グーグルは言う この変更は、ユーザーのプライバシーとセキュリティを保護するために Android 11 に導入されたものです。 同社はその方法について詳しくは明らかにしていないが、一部の悪意のあるアプリがカメラアプリになりすましてユーザーの写真にアクセスした可能性がある。 ただし、同社は、アプリが引き続きサードパーティのカメラアプリを起動できるようにする開発者向けの回避策について言及しています。 この回避策では基本的に、開発者はインテントを送信するときに、選択した特定のサードパーティ アプリをターゲットにする必要があります。 たとえば、ドキュメント スキャナ アプリの開発者は、明示的なインテントを送信して起動することができます。 Adobe Photoshop カメラ カメラピッカーを開くという暗黙の意図を送信するのではなく、 Android 11 では、開発者は前述の 3 つに応答できるアプリのリストをクエリすることさえできなくなります。 インテント アクション。つまり、開発者はどのサードパーティ カメラ アプリを使用するかを事前に知っておく必要があります。 サポート。
ソース: コモンズウェア, Android 開発者
経由: レディット
XDA シニアメンバーに感謝 Android開発者LB ヒントのために!
アップデート 1: Google は、この変更はプライバシーを維持するためであると述べています
Google は Android 11 の動作変更ページを更新し、「」に関する新しい情報を追加しました。メディア インテントのアクションにはシステムのデフォルトのカメラが必要です"セクション(経由) ザ・ヴァージ). Google の説明によると、この変更は「EXIF 位置情報メタデータが、 基本的に、Google は、明示的な位置情報へのアクセスがまだ許可されていないアプリが、ユーザーにカメラ アプリを開かせていることを懸念しています。 持っている 位置情報へのアクセスが許可されており、アプリに渡される結果の写真には EXIF 位置情報が含まれる可能性があるため メタデータがある場合、呼び出し側アプリは、メタデータから位置データを読み取ることで位置アクセスの要求をバイパスできます。 写真。 アプリが Android 11 でこれを実行しようとする場合、宣言する必要があります。 ACCESS_MEDIA_LOCATION
同様に ACCESS_COARSE_LOCATION
または ACCESS_FINE_LOCATION
EXIF 位置メタデータを読み取るためのアクセス許可。 (注意: Googleは位置情報アクセスの新たな抜け穴を封じた Android 10 では、アプリにリクエストを要求することで、 ACCESS_MEDIA_LOCATION
アプリが写真から編集されていない EXIF メタデータを取得しようとする場合に許可されます)。
この動作の変更は、アプリがユーザー定義のデフォルトのカメラ アプリを起動する機能に影響しますが、これは、アプリが古く、頻繁に使用されるためです。 前述のインテント アクションは、この変更がユーザー定義のデフォルト カメラ アプリを起動できるすべてのインテント アクションに影響を与えるわけではないと Google は指摘しています。 として: android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA
, android.provider.MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE
、 または android.provider.MediaStore.INTENT_ACTION_VIDEO_CAMERA
. ただし、これらのインテントは、呼び出し元のアプリに画像を送り返すのではなく、デフォルトのカメラ アプリを起動するだけであるため、同じ目的を果たしません。