最近很多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
權(quán)限。
要想使用此權(quán)限绞惦,您的應用對此權(quán)限的使用必須在下方列出的允許使用情形范疇內(nèi)廓推,并且應用的核心用途之一是搜索設備上的所有應用。您必須能夠給出充分理由翩隧,說明為何您的應用如果以侵擾度較低的方式查詢其他應用的安裝情況,則不足以實現(xiàn)符合政策規(guī)定的面向用戶的核心功能呻纹。
核心功能即應用的主要用途堆生。如果不具備搜索設備上所有應用這一核心功能,應用就會“損壞”或無法使用雷酪。對于核心功能以及構(gòu)成核心功能的所有核心特性淑仆,您必須在應用說明中醒目地載明并宣傳。
具體政策看鏈接:https://support.google.com/googleplay/android-developer/answer/10158779#zippy=%2Cpermitted-uses-of-the-query-all-packages-permission%2Cexceptions%2Cinvalid-uses%E3%80%81
敏感信息訪問權(quán)限和 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
調(diào)用方法:queryIntentActivities
[圖片上傳失敗...(image-2623c6-1663999337706)]
2.4 按提供程序授權(quán)
這種方式獲取到的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 的結(jié)果這一指南中所述。 - 啟動或綁定到您應用中的某項服務的任何應用遵湖。
- 訪問您應用中的 Content Provider 的任何應用悔政。
- 具有 Content Provider 的任何應用,其中您的應用已被授予 URI 權(quán)限來訪問該 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