2013-06-06 10 views
5

ターゲットapkのパッケージ名がわかっている場合は、プログラムの正確なファイル名を取得します。たとえば、私のapkのパッケージ名、つまりcom.packagenameが分かっている場合、そのパッケージの正確なパスとファイル名を取得するにはどうすればいいですか? Btw、私はちょうど私のAPKの場所を取得したくない、私は適用する任意のパッケージ名の場所が欲しい。 SystemTunerプロがこれを行うことができますので、私はそれが可能であることを知っている、ちょうど方法がわからない。どのように私はapkのファイル名とパスをプログラムで取得できますか?

ありがとうございました!

答えて

4

PackageManager.getPackageInfo()はパッケージに関する情報を返し、フィールドにはアプリケーションに関する必要な情報があります。

+2

最近または将来のAndroidのリリースでは、このように発見された宛先APKファイルに他のサードパーティのアプリケーションからアクセスできなくなることにご注意ください。 –

3

まあ、私は答えとしてYuriをマークしたいと思いますが、私はすでにそのことを知っていました。だから私はPackageManager.ApplicationInfoから一人ひとりオプションを経て、.publicSourceDir

を発見したおかげで再び男が、再び愛StackOverflowのをやった私の脳を得たので私の質問へのコードとの完全な答えは

PackageManager pm = getPackageManager(); 
    try { 
     ApplicationInfo ai = pInfo.getApplicationInfo(<packageName here>, 0); 
     String sourceApk = ai.publicSourceDir; 
    } catch (NameNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

だろう!

+1

"あなたはすでにそのことを知っていた"場合は、あなたの質問でそう言い、あなたが知らなかったものにもっと具体的な答えを得たかもしれません。 –

+0

まあ、私はパッケージ名を取得する方法を知っていたと言った。とても残念。 – Seth

+0

Seith、あなたはプログラムの正確なファイル名とパッケージの正確なパスとファイル名について尋ねました。これを考慮すると、ApplicationInfoは私が考えることができる最高の答えでした。私はもっと正確ではありませんでした:) – Y2i

3
/** 
* Get the apk path of this application. 
* @param context any context (e.g. an Activity or a Service) 
* @return full apk file path, or null if an exception happened (it should not happen) 
*/ 
public static String getApkName(Context context) { 
    String packageName = context.getPackageName(); 
    PackageManager pm = context.getPackageManager(); 
    try { 
     ApplicationInfo ai = pm.getApplicationInfo(packageName, 0); 
     String apk = ai.publicSourceDir; 
     return apk; 
    } catch (Throwable x) { 
    } 
    return null; 
} 
+0

皆、私はこれをdownvoted見たことがあります。それはまだ現代のアンドロイドで動作しますか? – 18446744073709551615

関連する問題