2012-03-12 1 views
2

感謝のパッケージ名を取得しますか? OSがカスタマイズされている場合、デフォルトのパッケージ名はデバイスメーカーによって変更されます。コーディングによってパッケージ名を取得するにはどうすればよいですか?これが可能であるかどうかはわかりません。どのよう</p> <p>それがデバイスにインストールされているカメラアプリケーションのパッケージ名を取得することが可能であり、カメラアプリケーション、前の回答のため

答えて

6

私はわからないが、私はあなたが指定した意図を使用して、アプリケーションのパッケージ名を取得することができると思います..特定の意図を扱う利用可能なアプリケーションの情報を取得するため、このコードで

見て、

/** 
* Indicates whether the specified action can be used as an intent. This 
* method queries the package manager for installed packages that can 
* respond to an intent with the specified action. If no suitable package is 
* found, this method returns false. 
* 
* @param context The application's environment. 
* @param action The Intent action to check for availability. 
* 
* @return True if an Intent with the specified action can be sent and 
*   responded to, false otherwise. 
*/ 
public static boolean isIntentAvailable(Context context, String action) { 
    final PackageManager packageManager = context.getPackageManager(); 
    final Intent intent = new Intent(action); 
    List list = 
      packageManager.queryIntentActivities(intent, 
        PackageManager.MATCH_DEFAULT_ONLY); 
    return list.size() > 0; 
} 

カメラインテントを使用すると、IMAGE_CAPTUREインテントを処理するアプリケーション情報を取得できます。この情報を使用すると、簡単にパッケージ名を取得できます。

更新:

List<ResolveInfo> listCam = packageManager.queryIntentActivities(intent, 0); 
for (ResolveInfo res : listCam) { 
    Log.e("Camera Application Package Name and Activity Name",res.activityInfo.packageName + " " + res.activityInfo.name)); 
} 

これを試してみて、私が起こるか知ってみましょう。..

+0

ありがとう、私はパッケージ名を持っています。 – RAAAAM

+0

[ResolveInfo {4053ded8 com.mediatek.camera.Camera p = 0 o = 0 m = 0x108000}]これは私が上記のコードをコンパイルするときに得たものです。どうすればパッケージ名自体を分けることができますか? – RAAAAM

+0

res.activityInfo.packageNameはあなたにパッケージ名を与えます:-) – user370305

0

は、私はそれはいくつかの精度では不可能か、可能だと思いhttp://www.androidsnippets.com/get-installed-applications-with-name-package-name-version-and-icon

class PInfo { 
    private String appname = ""; 
    private String pname = ""; 
    private String versionName = ""; 
    private int versionCode = 0; 
    private Drawable icon; 
    private void prettyPrint() { 
     Log.v(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode); 
    } 
} 

private ArrayList<PInfo> getPackages() { 
    ArrayList<PInfo> apps = getInstalledApps(false); /* false = no system packages */ 
    final int max = apps.size(); 
    for (int i=0; i<max; i++) { 
     apps.get(i).prettyPrint(); 
    } 
    return apps; 
} 

private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) { 
    ArrayList<PInfo> res = new ArrayList<PInfo>();   
    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0); 
    for(int i=0;i<packs.size();i++) { 
     PackageInfo p = packs.get(i); 
     if ((!getSysPackages) && (p.versionName == null)) { 
      continue ; 
     } 
     PInfo newInfo = new PInfo(); 
     newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString(); 
     newInfo.pname = p.packageName; 
     newInfo.versionName = p.versionName; 
     newInfo.versionCode = p.versionCode; 
     newInfo.icon = p.applicationInfo.loadIcon(getPackageManager()); 
     res.add(newInfo); 
    } 
    return res; 
} 
0

を参照してください。すべてのシステムパッケージ(デバイスに付属しているアプリケーション)を列挙し、CAMERA権限を持つパッケージを選択できます。しかし、このアプローチはいくつかのアプリケーションを提供することができます。なぜなら、いくつかのアプリケーションでは、ニーズに合わせてカメラを使用できるからです。しかし、一般的なケースでは、これは不可能だと思います。

8
:はあなたのケースでは、特定の意図が

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

EDITある

これは試しましたか?

PackageManager packman = getPackageManager(); 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    String pack = intent.resolveActivity(packman).getPackageName();