獲取用戶已安裝的APP列表及APK安裝包

碼字辛苦瞳抓!轉(zhuǎn)載請注明出處埃疫!

· 錯誤的方法:

public static List<PackageInfo> getAllApplication(Context context, boolean needActivities) {
        PackageManager packageManager = context.getPackageManager();
        return packageManager.getInstalledPackages(needActivities ? PackageManager.GET_ACTIVITIES : 0);
    }

這是目前網(wǎng)上最流行,也是看上去語義最貼合實際的方法孩哑,然而,經(jīng)過博主項目的大量測試横蜒,發(fā)現(xiàn)此方法存在三個致命問題:

1仅炊、獲取了很多系統(tǒng)服務:這些服務是沒有Activity谋逻、并且無法通過去掉系統(tǒng)APP被篩除的

2斤贰、獲取不到完整的APP列表:在博主的測試中,經(jīng)常發(fā)現(xiàn)掃描不到某QQ送巡、某視頻等APP的BUG

3骗爆、獲取不到APP的啟動Activity:這種方式只能獲取到APP所有的Activity,至于LauncherActivity是哪個犀呼,無從得知律胀。盡管多數(shù)APP的Manifest文件首項就是LauncherActivity,但仍有很多反其道而行的應用,如:某QQ

綜上所述,樓主極不推薦使用packageManager.getInstalledPackages方式獲取應用列表!

· 推薦的方法:

//獲取用戶安裝的APP
    public static List<ResolveInfo> getInstalledApplication(Context context, boolean needSysAPP) {
        PackageManager packageManager = context.getPackageManager();
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent, 0);
        if (!needSysAPP) {
            List<ResolveInfo> resolveInfosWithoutSystem = new ArrayList<>();
            for (int i = 0; i < resolveInfos.size(); i++) {
                ResolveInfo resolveInfo = resolveInfos.get(i);
                try {
                    if (!isSysApp(context, resolveInfo.activityInfo.packageName)) {
                        resolveInfosWithoutSystem.add(resolveInfo);
                    }
                } catch (PackageManager.NameNotFoundException e) {
                    e.printStackTrace();
                }
            }
            return resolveInfosWithoutSystem;
        }
        return resolveInfos;
    }

    //判斷是否系統(tǒng)應用
    public static boolean isSysApp(Context context, String packageName) throws PackageManager.NameNotFoundException {
        PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName, 0);
        return (packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1;
    }

· 一些常見數(shù)據(jù)的獲取:

//包名
resolveInfo.activityInfo.packageName
 
//啟動Activity
resolveInfo.activityInfo.name 
 
//APP名
resolveInfo.activityInfo.applicationInfo.loadLabel(getPackageManager())
 
//Icon
resolveInfo.activityInfo.applicationInfo.loadIcon(getPackageManager())
 
//APK安裝包路徑
resolveInfo.activityInfo.applicationInfo.sourceDir
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市番电,隨后出現(xiàn)的幾起案子岗屏,更是在濱河造成了極大的恐慌,老刑警劉巖漱办,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件这刷,死亡現(xiàn)場離奇詭異,居然都是意外死亡娩井,警方通過查閱死者的電腦和手機暇屋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洞辣,“玉大人咐刨,你說我怎么就攤上這事⊙锼” “怎么了所宰?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長畜挥。 經(jīng)常有香客問我仔粥,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任躯泰,我火速辦了婚禮谭羔,結果婚禮上,老公的妹妹穿的比我還像新娘麦向。我一直安慰自己瘟裸,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布诵竭。 她就那樣靜靜地躺著话告,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卵慰。 梳的紋絲不亂的頭發(fā)上沙郭,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音裳朋,去河邊找鬼病线。 笑死,一個胖子當著我的面吹牛鲤嫡,可吹牛的內(nèi)容都是我干的送挑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼暖眼,長吁一口氣:“原來是場噩夢啊……” “哼惕耕!你這毒婦竟也來了?” 一聲冷哼從身側響起诫肠,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤司澎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后区赵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡浪南,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年笼才,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片络凿。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡骡送,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出絮记,到底是詐尸還是另有隱情摔踱,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布怨愤,位于F島的核電站派敷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜篮愉,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一腐芍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧试躏,春花似錦猪勇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至犀被,卻和暖如春椅您,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背弱判。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工襟沮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人昌腰。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓开伏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親遭商。 傳聞我的和親對象是個殘疾皇子固灵,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355