72

com.android.abc特定のパッケージまたはアプリケーション (例: ) が Android デバイスに存在するかどうかを確認するにはどうすればよいですか?

4

9 に答える 9

157

パッケージ名を指定して、以下のいずれかのメソッドを呼び出します。

import android.content.pm.PackageManager;

// ...

    public boolean isPackageExisted(String targetPackage){
        List<ApplicationInfo> packages;
        PackageManager pm;

        pm = getPackageManager();        
        packages = pm.getInstalledApplications(0);
        for (ApplicationInfo packageInfo : packages) {
            if(packageInfo.packageName.equals(targetPackage))
                return true;
        }
        return false;
    }

 import android.content.pm.PackageManager;

 public boolean isPackageExisted(String targetPackage){
   PackageManager pm=getPackageManager();
   try {
     PackageInfo info=pm.getPackageInfo(targetPackage,PackageManager.GET_META_DATA);
   } catch (PackageManager.NameNotFoundException e) {
     return false;
   }  
   return true;
 }
于 2011-07-20T08:18:42.473 に答える
13

try-catch ブロックを使用したり、一連のパッケージを反復処理したりせずに:

public static boolean isPackageInstalled(Context context, String packageName) {
    final PackageManager packageManager = context.getPackageManager();
    Intent intent = packageManager.getLaunchIntentForPackage(packageName);
    if (intent == null) {
        return false;
    }
    List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}
于 2015-06-08T11:40:52.290 に答える
4
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
boolean isIntentSafe = activities.size() > 0;
于 2013-12-07T23:57:56.400 に答える
3

インストールされているすべてのパッケージのリストを取得し、目的のパッケージを検索するには、PackageManager呼び出された の関数を使用する必要があります。パッケージ名はフィールドにあることに注意してください。getInstalledPackages()PackageInfo.packageName

于 2011-07-20T08:15:31.070 に答える
2

adb のみを使用する場合:

adb shell "pm list packages"|cut -f 2 -d ":"

インストールされているすべてのパッケージが一覧表示されます。

于 2016-05-23T11:02:15.343 に答える
2

pm.getInstalledApplications() を繰り返す代わりに、pm.getPackageUid() を使用できます。

 boolean isPackageInstalled;
 PackageManager pm = getPackageManager();   
 int flags = 0; 
        try 
        {   
              pm.getPackageUid(packageName,flags);               
              isPackageInstalled = true;    
        }   
        catch (final PackageManager.NameNotFoundException nnfe) 
        {   
            isPackageInstalled = false; 
        }                   
 return isPackageInstalled;
于 2018-10-05T16:20:31.287 に答える