最近很多app因為QUERY_ALL_PACKAGES的問題,被google play下架了,這對重度依賴applist的現(xiàn)金貸公司來說無疑是災難,這相當于你去銀行借錢,但銀行沒有辦法查到你的征信情況,只能盲放了,逾期率變高這誰都頂不住。
下面我將介紹applist的一些獲取方法,希望能幫大家多茍幾天哈哈哈,穩(wěn)食艱難
1、QUERY_ALL_PACKAGES政策情況
僅當您的應用在搭載 Android 11 或更高版本的設備上以 Android API 級別 30 或更高版本為目標運行環(huán)境時,該應用才能使用 QUERY_ALL_PACKAGES 權限。
要想使用此權限,您的應用對此權限的使用必須在下方列出的允許使用情形范疇內,并且應用的核心用途之一是搜索設備上的所有應用。您必須能夠給出充分理由,說明為何您的應用如果以侵擾度較低的方式查詢其他應用的安裝情況,則不足以實現(xiàn)符合政策規(guī)定的面向用戶的核心功能。
核心功能即應用的主要用途。如果不具備搜索設備上所有應用這一核心功能,應用就會“損壞”或無法使用。對于核心功能以及構成核心功能的所有核心特性,您必須在應用說明中醒目地載明并宣傳。
具體政策看鏈接:https://support.google.com/googleplay/android-developer/answer/10158779#zippy=%2Cpermitted-uses-of-the-query-all-packages-permission%2Cexceptions%2Cinvalid-uses%E3%80%81
敏感信息訪問權限和 API:https://support.google.com/googleplay/android-developer/answer/9888170
2、applist獲取方式
管理軟件包可見性:
https://developer.android.google.cn/training/basics/intents/package-visibility#intent-signature
2.1 QUERY_ALL_PACKAGES獲取
是目前最好的獲取的方式,如果能用還是優(yōu)先使用這個方法
[圖片上傳失敗...(image-f6d755-1663999337707)]
2.2 軟件包名稱獲取
這種方式看起來比較low和麻煩,你需要把你想要的包名都寫上,隔三差五更新一下,需要的包名一多,維護起來相當麻煩
添加包名 <package android:name="com.sina.weibo" /> # 通過以下方式判斷是否存在就行了: context.getPackageManager().getPackageInfo(pkgName, 0);
[圖片上傳失敗...(image-3d9980-1663999337707)]
2.3 intent 簽名獲取
intent獲取的方式比2.2的方式方便很多,不需要知道app具體的包名就能獲取applist,
有大神測試過,和QUERY_ALL_PACKAGES方式獲取的差異主要在一些系統(tǒng)級別的軟件,這個影響不大,具體見:
https://juejin.cn/post/7137864762045497358#heading-7
調用方法:queryIntentActivities
[圖片上傳失敗...(image-2623c6-1663999337706)]
2.4 按提供程序授權
這種方式獲取到的applist太少了,限制特別多,像對小貸公司來說可以選擇放棄了:https://developer.android.com/training/package-visibility/automatic
自動可見的應用類型:
- 您自己的應用。
- 實現(xiàn) Android 核心功能的某些系統(tǒng)軟件包,例如媒體提供程序。
- 安裝了您應用的應用。
- 使用
[startActivityForResult()](https://link.zhihu.com/?target=https%3A//developer.android.com/reference/kotlin/android/app/Activity%23startactivityforresult)方法在您的應用中啟動 activity 的任何應用,正如如何獲取 activity 的結果這一指南中所述。 - 啟動或綁定到您應用中的某項服務的任何應用。
- 訪問您應用中的 Content Provider 的任何應用。
- 具有 Content Provider 的任何應用,其中您的應用已被授予 URI 權限來訪問該 Content Provider。
- 接收您應用的輸入的任何應用。這種情況僅適用于您的應用作為輸入法應用提供輸入。
[圖片上傳失敗...(image-51599b-1663999337706)]
擴展閱讀
聊聊Applist那些事兒:https://mp.weixin.qq.com/s/C222U2ddBMeR21Ndek6c8Q
[圖片上傳失敗...(image-286dd7-1663999337706)]
聲明軟件包可見性需求: https://developer.android.com/training/package-visibility/declaring
開發(fā)者如何處理軟件包可見性:https://zhuanlan.zhihu.com/p/363644001