2013-06-06 3 views
5

대상 apk의 패키지 이름을 이미 알고있는 경우 프로그램의 정확한 파일 이름을 가져 오려고합니다. 예를 들어, com.packagename 인 apk의 패키지 이름을 알고 있다면 패키지의 정확한 경로와 파일 이름을 어떻게 얻을 수 있습니까? Btw, 나는 내 APK 위치를 얻고 싶지 않다. 나는 적용 할 패키지 이름의 위치를 ​​원한다. SystemTuner pro는 이것을 수행 할 수 있으므로 가능하다는 것을 알고 있습니다. 확실하지 않습니다.어떻게 apk 파일 이름과 경로를 프로그래밍 방식으로 얻을 수 있습니까?

고마워요!

답변

4

PackageManager.getPackageInfo()은 패키지에 대한 정보를 반환하고 PackageInfo.applicationInfo 필드에는 해당 응용 프로그램에 대한 필수 정보가 있습니다.

+2

최근 또는 향후 Android 버전에서 발견 된 대상 apk 파일은 다른 타사 앱에서 더 이상 액세스 할 수 없습니다. –

3

글쎄, 나는 유리를 해답으로 표시하고 싶지만 이미 그 물건에 대해 알고 있었다. 그래서 PackageManager.ApplicationInfo에서 각각의 모든 옵션을 통해 가서 .publicSourceDir

을 발견 그래서 내 질문에 코드를 완전한 대답은, 다시

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

그래서 덕분에들 수 다시 한 번 사랑에 StackOverflow를가는 내 머리를 가지고 것입니다!

+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

얘들 아, 나는 이것을 보았다. 현대 안드로이드에서도 여전히 작동합니까? – 18446744073709551615

관련 문제