1.
獲取手機上安裝應用列表,需要撒權限?需要的話是否涉及危險權限?獲取到應用列表我們能做些撒?
首先,我們思考下獲取這個列表的目的?
- 我們可以通過特定包名來進行
應用間喚醒
操作; - 你裝了什麼應用就說明你的愛好,以此爲基礎,
推送你可能感興趣的應用
; - 應用中如果有第三方登錄,分享撒的,可能需要通過包名判斷第三方APP
是否安裝
; - 應用市場檢測是否需要升級特定應用;
待完善
其次,目前我測試Android 9.0
版本紅米
手機,安裝APP,獲取應用列表這個是無需任何權限申請
的。更低版本,像我手頭有臺Android 5.1
的錘子
手機,也是無需任何權限這些限制的。
2.
獲取應用列表代碼
public void isAvailable(Context context) {
final PackageManager packageManager = context.getPackageManager();
// 獲取所有已安裝程序的包信息
List<PackageInfo> pkgInfo = packageManager.getInstalledPackages(0);
List<String> pName = new ArrayList<>();// 用於存儲所有已安裝程序的包名
if (pkgInfo != null) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < pkgInfo.size(); i++) {
String pn = pkgInfo.get(i).packageName;
// 判斷系統/非系統應用
if ((pkgInfo.get(i).applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) // 非系統應用
{
Log.i(TAG, "pn: " + pn + "\n");
sb.append(pn);
sb.append("\n");
pName.add(pn);
} else {
// 系統應用
}
}
}
}