Java 从packageName获取应用程序名称

Java 从packageName获取应用程序名称,java,android,xml,Java,Android,Xml,我正在尝试插入应用程序的名称作为首选项的摘要。我编写了这段代码,但它不起作用,因为当我运行应用程序时,在这一行出现NullPointerException崩溃 name.setSummary(Pm.getApplicationLabel(nameApp)); 代码是 value2 = getIntent().getStringExtra("ApplicationName"); PackageManager Pm = getPackageManager(); Appl

我正在尝试插入应用程序的名称作为首选项的摘要。我编写了这段代码,但它不起作用,因为当我运行应用程序时,在这一行出现NullPointerException崩溃

name.setSummary(Pm.getApplicationLabel(nameApp));
代码是

    value2 = getIntent().getStringExtra("ApplicationName");

    PackageManager Pm = getPackageManager();

    ApplicationInfo nameApp = Pm.getApplicationInfo(value2, 0);

    name.setSummary(Pm.getApplicationLabel(nameApp));
Value2是一个变量的名称,该变量采用上一个活动中的程序包名称,此步骤运行良好,即程序包名称已正确传递和恢复

请尝试此操作

    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 = packageManager.getApplicationLabel(pk).toString();
        System.out.println("Application name : "+appname);
    }

对于包,尝试使用此方法

Resources appR = ctx.getResources();
CharSequence txt = appR.getText(appR.getIdentifier("app_name",
"string", ctx.getPackageName()));
对于应用程序名称,请使用
PackageManager#getApplicationInfo()

Resources appR = ctx.getResources();
CharSequence txt = appR.getText(appR.getIdentifier("app_name",
"string", ctx.getPackageName()));