簡體   English   中英

如何使用PackageManager獲取已安裝的軟件包?

[英]How to get installed packages using PackageManager?

我想獲取已安裝應用程序的列表,但只有具有圖標且可啟動的應用程序 我正在制作一個啟動器應用程序,並使用它:

  private List<AppList> getInstalledApps() {
    List<AppList> res = new ArrayList<AppList>();
    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
    for (int i = 0; i < packs.size(); i++) {
        PackageInfo p = packs.get(i);
        if ((isSystemPackage(p) == false)) {
            String appName = p.applicationInfo.loadLabel(getPackageManager()).toString();
            Drawable icon = p.applicationInfo.loadIcon(getPackageManager());
            String package_name = p.applicationInfo.packageName;
            res.add(new AppList(appName, package_name, icon));
        }
    }

private boolean isSystemPackage(PackageInfo pkgInfo) {
    return ((pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) ? true : false;
}

問題是,要過濾掉無法啟動的應用程序,我必須過濾掉系統應用程序,這不是最好的解決方案,因為它還會過濾掉以下應用程序:相機,日歷,計算器等。

您可以通過以下方式檢查應用是否可啟動

packageManager.getLaunchIntentForPackage(packageName) != null

對於圖標,您可以檢查是否

info.loadIcon(packageManager) != null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM