11

我做了一个小方法来在android中显示已安装的应用程序名称。但是当我给出“名称”属性时,它会显示异常错误。当我给出“packageName”时,该方法会完美执行并在列表中显示包名

private void getInstalledApps() {
    // TODO Auto-generated method stub
     PackageManager packageManager=this.getPackageManager();
        List<ApplicationInfo applist=packageManager.getInstalledApplications(0);


        Iterator<ApplicationInfo> it=applist.iterator();
        while(it.hasNext()){
            ApplicationInfo pk=(ApplicationInfo)it.next();

            String appname=pk.name.toString();

            installedapplist.add(appname);
        }

}

在上面的代码中,当我给String appname=pk.packageName.toString()它工作正常但是当我给String appname=pk.name.toString()程序时抛出异常错误。请帮我解决问题。

4

2 回答 2

26

我的猜测是您的代码抛出 NullPointerException 因为该name字段为空。无论如何,您可能想要的是:

String appname = packageManager.getApplicationLabel(pk).toString()
于 2011-07-27T00:58:32.030 回答
0

通过使用它,您可以获得已安装的应用程序包名称和应用程序名称

List<PackageInfo> packageInfos=getPackageManager().getInstalledPackages(0);
for (PackageInfo packageInfo:packageInfos)
{
        Log.d(TAG,"packageName "+packageInfo.packageName);
        Log.d(TAG,"appname "+getPackageManager().getApplicationLabel(packageInfo.applicationInfo));
}
于 2017-08-23T16:03:40.023 回答