Android App安裝列表獲取方法(實(shí)踐方案)
前言
Android 系統(tǒng)在 Android11時(shí),對獲取app列表方案做了很大調(diào)整,需要對Android 11上下版本兼容,尤其是Android15上做出了大的變動(dòng)。
實(shí)現(xiàn)方案
方案概述
獲取app安裝列表,主要有兩個(gè)地方代碼需要配置:
一、在AndroidManifest.xml中添加配置,配置分為權(quán)限、白名單、action 三種
二、在使用前面任意一種配置后,通過API(Java or Kotlin代碼)獲取安裝列表,也有兩種API可使用
一、 AndroidManifest 三種配置方式
1、方案一(權(quán)限:不建議使用)
權(quán)限配置: <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
2、方案二(白名單:如果白名單在1000以內(nèi),建議使用,1000及以上不建議使用)
<manifest > <queries> <package android:name="com.google.gson"/> </queries> <manifest >
3、方案三(action:建議使用)
<queries> <intent> <action android:name="android.intent.action.MAIN"/> </intent> <intent> <action android:name="com.appsflyer.referrer.INSTALL_PROVIDER"/> </intent> <intent> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="https"/> </intent> <intent> <action android:name="android.support.customtabs.action.CustomTabsService"/> </intent> <intent> <action android:name="android.intent.action.DIAL"/> </intent> </queries>
二、API代碼
1、方案一(已廢棄方案,Android15以下)
PackageManager.getInstalledPackages
優(yōu)點(diǎn):
- 配合權(quán)限可以獲取手機(jī)全部安裝列表 。
- 配合action可獲取到大部分已安裝app(個(gè)別系統(tǒng)應(yīng)用獲取不到)
缺點(diǎn):
- 部分類型應(yīng)用,google禁止使用QUERY_ALL_PACKAGES權(quán)限,如果app內(nèi)添加此權(quán)限,會(huì)被拒絕上架,例如:金融類型app。
- Android15開始 +getInstalledPackagesAPI 獲取不到除app本身外的任何已安裝app。
- Android15對白名單package開始限制在1000以內(nèi),超過這個(gè)數(shù)量,手機(jī)無法安裝應(yīng)用。(用于不添加權(quán)限)eg:
<manifest > <queries> <package android:name="com.google.gson"/> </queries> <manifest >
4.Android11開始,google play 不再建議使用這種方式,Android 15開始這個(gè)api通過action方式獲取不到app列表了,
2、方案二 (建議使用,但獲取到的app列表比較少,大部分非系統(tǒng)應(yīng)用都可以獲取,超過半數(shù)的系統(tǒng)應(yīng)用獲取不到),與action配合使用,也可以action與白名單混合使用
PackageManager.queryIntentActivities(intent, PackageManager.MATCH_ALL);
優(yōu)點(diǎn):
沒有系統(tǒng)適配的限制
缺點(diǎn):
獲取到的列表不全
總結(jié)
- 如果可以使用權(quán)限,則使用權(quán)限+getInstalledPackages 方案沒有問題。
- 如果不可以使用權(quán)限,需要查詢的白名單少,可以使用 Manifest第二種配置方案+getInstalledPackages
- 如果白名單超過了999個(gè)包名,則建議使用 action方式+白名單+queryIntentActivities方式
到此這篇關(guān)于Android App安裝列表獲取的文章就介紹到這了,更多相關(guān)Android App安裝列表獲取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
android使用SkinManager實(shí)現(xiàn)換膚功能的示例
本篇文章主要介紹了android使用SkinManager實(shí)現(xiàn)換膚功能的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02Android開發(fā)中方向傳感器定義與用法詳解【附指南針實(shí)現(xiàn)方法】
這篇文章主要介紹了Android開發(fā)中方向傳感器定義與用法,結(jié)合實(shí)例形式分析了Android方向傳感器的功能、定義與使用方法,并附帶基于方向傳感器實(shí)現(xiàn)指南針功能的方法,需要的朋友可以參考下2017-11-11Android學(xué)習(xí)之使用SharedPreferences存儲(chǔ)應(yīng)用程序數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了Android學(xué)習(xí)之使用SharedPreferences保存應(yīng)用程序數(shù)據(jù)的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05Android實(shí)現(xiàn)瘋狂連連看游戲之狀態(tài)數(shù)據(jù)模型(三)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)瘋狂連連看游戲之狀態(tài)數(shù)據(jù)模型,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Kotlin 匿名類實(shí)現(xiàn)接口和抽象類的區(qū)別詳解
這篇文章主要介紹了Kotlin 匿名類實(shí)現(xiàn)接口和抽象類的區(qū)別詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Android自定義View實(shí)現(xiàn)繪制虛線的方法詳解
這篇文章主要給大家介紹了Android自定義View實(shí)現(xiàn)繪制虛線的方法,在繪制過程中走了一些彎路才實(shí)現(xiàn)了虛線的效果,所以想著總結(jié)分享出來,方便有需要的朋友和自己在需要的時(shí)候參考學(xué)習(xí),下面來一起看看吧。2017-04-04Android開發(fā)設(shè)計(jì)nowinandroid構(gòu)建腳本學(xué)習(xí)
這篇文章主要為大家介紹了Android開發(fā)設(shè)計(jì)nowinandroid構(gòu)建腳本學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11