2011-07-27 8 views
9

나는 안드로이드에 설치된 응용 프로그램 이름을 표시하는 작은 방법을 만들었습니다. 하지만 "예외"오류를 보여주는 "이름"특성을 제공 할 때. 그리고 내가 "여기서 packagename"줄 때 방법은 완벽하게 실행하고 나는 그것을 잘 작동하지만 String appname=pk.name.toString()을 줄 때 프로그램이 예외 오류를 던지고있다 String appname=pk.packageName.toString()을 줄 때 위의 코드에서 목록Android에 설치된 애플리케이션 이름을 얻는 방법은 무엇입니까?

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); 
     } 

} 

에서 패키지 이름을 표시합니다. 문제를 해결하도록 도와주세요.

답변

20

내 생각에 name 필드가 null이므로 코드에서 NullPointerException을 발생시키고 있습니다. 어떤 경우에도, 당신이 아마 원하는 것은 :

String appname = packageManager.getApplicationLabel(pk).toString() 
+0

감사를 설치 얻을 수있는이를 사용하여. 정확히 내가 무엇을 찾고 있었는지. – user3734429

+0

니스, 고마워. 왜 그것이 null인지 어떤 아이디어? – charlag

+0

@charlag_khan -'pk.name'을 의미합니까? 아마도 매니페스트가 'android : name' 속성을 선언하지 않았기 때문일 수 있습니다. 이 이름은 앱이 자신의 'Application' 서브 클래스를 정의해야 할 때만 사용됩니다. –

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)); 
} 
관련 문제