Android でのパッケージの公開設定のフィルタリング

Android 11(API レベル 30)以降をターゲットとするアプリが、デバイスにインストール済みの他のアプリに関する情報をクエリすると、デフォルトでこの情報がフィルタされます。パッケージの公開設定を限定すると、アプリから見て、デバイスにインストールされているように見えるアプリの数が減少します。

このフィルタリング動作により、ユースケースを実行するために必要ではないもののアプリがアクセスできる、機密になり得る情報の量を最小限に抑えることができます。また、パッケージの公開設定をフィルタすることで、Google Play などのアプリストアで、アプリがユーザーに提供するプライバシーとセキュリティを評価できるようになります。たとえば、Google Play では、インストール済みアプリの一覧はユーザーの個人情報および機密情報とみなされます。

アプリ公開設定を限定すると、queryIntentActivities()getPackageInfo()getInstalledApplications() など、他のアプリに関する情報を提供するメソッドの戻り値が影響を受けます。また、公開設定の限定により、他のアプリとの明示的な連携(別のアプリのサービスを起動するなど)も影響を受けます。

一部のパッケージは引き続き自動的に公開されます。アプリでは、他のインストール済みアプリのクエリで、このようなパッケージをいつでも確認できます。他のパッケージを表示するには、<queries> 要素を使用して、パッケージの公開設定を増やす必要性を宣言します。ユースケースのページでは、一般的なアプリの連携シナリオの例を紹介しています。

まれなケースですが、<queries> 要素でパッケージの公開設定が十分に指定されていない場合でも、QUERY_ALL_PACKAGES 権限を使用できます。アプリを Google Play で公開する場合、この権限の使用は、今後のポリシーに基づいて承認されます。

参考情報

Android でのパッケージの公開設定の詳細については、次の資料をご覧ください。

ブログ投稿