1. 程式人生 > >獲取已安裝應用資訊,判斷是否為系統應用

獲取已安裝應用資訊,判斷是否為系統應用

/**
     * 獲取已安裝應用資訊
     * @param includeSystemApps true:包含系統應用 false:不包含系統應用
     */
    @SuppressWarnings("static-access")
    private void getAppInfo(boolean includeSystemApps) {
        PackageManager pm = mActivity.getPackageManager();
        // 放到子執行緒中執行
        List<AppInfo> appInfos = new
ArrayList<>(); List<PackageInfo> packageInfos = mActivity.getPackageManager().getInstalledPackages(0); for (PackageInfo packageInfo : packageInfos) { /*if ((!includeSystemApps) && null == packageInfo.versionName) { continue; }*/
//判斷是否為非系統預裝的應用 (大於0為系統預裝應用,小於等於0為非系統應用) if (!includeSystemApps) { if ((packageInfo.applicationInfo.flags & packageInfo.applicationInfo.FLAG_SYSTEM) > 0) { continue; } } AppInfo appInfo = new AppInfo(); // 獲得應用名
appInfo.setName(pm.getApplicationLabel(packageInfo.applicationInfo).toString()); // 獲得應用包名 appInfo.setPackageName(packageInfo.packageName); appInfo.setIcon(packageInfo.applicationInfo.loadIcon(pm)); appInfos.add(appInfo); } }