2011-07-27 15 views
9

インストールされているアプリケーション名をアンドロイドに表示する小さな方法を作りました。しかし、私が "name"属性にその例外エラーを表示すると、そして、私は「の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)); 
} 
関連する問題