【问题标题】:Launcher Name Of Installed Apps已安装应用程序的启动器名称
【发布时间】:2013-10-04 06:45:44
【问题描述】:

我必须从 android 设备获取已安装应用程序的列表。我能够得到清单。但是从 PackageInfo 对象获取应用程序的 启动器名称 (在清单中的启动器活动标记中而不是在应用程序标记中定义)存在一些问题。如何从 PackageInfo 对象中获取已安装应用的启动器名称??

这种方式我试过了

packageInfo.applicationInfo.loadLabel(packageManager)

但这并没有给出启动器名称。它给出了应用程序标签字符串。

【问题讨论】:

    标签: android launcher


    【解决方案1】:

    使用以下代码获取所有包的启动器活动:

       class PInfo {
        private String appname = "";
        private String pname = "";
        private String versionName = "";
        private int versionCode = 0;
        private Drawable icon;
        private void prettyPrint() {
            Log.v(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode);
        }
    }
    
    private ArrayList<PInfo> getPackages() {
        ArrayList<PInfo> apps = getInstalledApps(false); /* false = no system packages */
        final int max = apps.size();
        for (int i=0; i<max; i++) {
            apps.get(i).prettyPrint();
        }
        return apps;
    }
    
    private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {
        ArrayList<PInfo> res = new ArrayList<PInfo>();        
        List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
        for(int i=0;i<packs.size();i++) {
            PackageInfo p = packs.get(i);
            if ((!getSysPackages) && (p.versionName == null)) {
                continue ;
            }
            PInfo newInfo = new PInfo();
            newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
            newInfo.pname = p.packageName;
            newInfo.versionName = p.versionName;
            newInfo.versionCode = p.versionCode;
            newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
            res.add(newInfo);
        }
        return res; 
    }
    

    【讨论】:

    • 我得到了 List allPackagesList = packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS); 的列表
    • 我想从 PackageInfo 对象中获取应用程序名称
    • 我能够获取应用程序列表。但我的问题是从 PackageInfo 对象中获取应用程序的启动器名称。
    • 您的答案给出了 Activity 的包名称。而不是应用程序的启动器名称。
    • 您在更新答案中使用的方法是 CharSequence getApplicationLabel (ApplicationInfo info) 需要一个 ApplicationInfo 对象。
    【解决方案2】:

    如果您想要处理启动器的应用程序,那么您可以使用 PackageManager 查找处理意图过滤器 Intent.CATEGORY_HOME 的应用程序。

    【讨论】:

    • 我能够获取应用程序列表。但我的问题是从 PackageInfo 对象中获取应用程序的启动器名称。
    猜你喜欢
    • 1970-01-01
    • 2018-04-09
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多