Android 11 中獲取第三方app資訊不可見
阿新 • • 發佈:2021-01-23
技術標籤:軟體可見性queriesAndroid獲取安裝app資訊
Android11 更改了應用查詢使用者已在裝置上安裝的其他應用以及與之互動的方式。使用<queries>
元素,應用可以定義一組自身可訪問的其他軟體包。通過告知系統應向您的應用顯示哪些其他軟體包,此元素有助於鼓勵最小許可權原則。此外,此元素還可幫助 Google Play 等應用商店評估應用為使用者提供的隱私權和安全性。
如果您的應用以 Android11 或更高版本為目標平臺,您可能需要在應用的清單檔案中新增<queries>
元素。在<queries>
元素中,您可以按軟體包名稱、intent 簽名或提供程式授權指定軟體包。
在manifest中加入需要的包名,,獲取getInstalledApplications() or getInstalledPackages() 無法獲取到對應的包資訊,需要新增包名,相當於是新增白名單,才能拿到相應的資訊-
<queries> <!--微信--> <package android:name="com.tencent.mm" /> <!--抖音--> <package android:name="com.ss.android.ugc.aweme" /> <!--相機--> <intent> <action android:name="android.media.action.IMAGE_CAPTURE" /> </intent> </queries>
如需測試此行為變更是否已在您的應用中生效,請完成以下步驟:
- 安裝Android Studio 3.6.1或更高版本。
- 安裝 Android Studio 支援的最新版 Gradle。
- 將應用的
targetSdkVersion
設為30
。 - 不要在應用的清單檔案中新增
<queries>
元素。 - 呼叫
getInstalledApplications()
或getInstalledPackages()
。這兩種方法都應返回過濾後的列表。 - 檢視應用的哪些功能無法正常使用。
- 引入適當的
<queries>
條目來修復這些功能。