Ответ 1
PackageManager.getPackageInfo() возвращает информацию о пакете и PackageInfo.applicationInfo требуется информация о приложении.
Я хочу получить точное имя файла программы, если я уже знаю имя пакета целевого apk. Например, если я знаю имя пакета моего apk, которое является com.packagename, как я могу получить точный путь и имя файла этого пакета? Btw, я не хочу получать только расположение MY apk, я хочу, чтобы местоположение любого имени пакета, которое я применяю. SystemTuner pro способен сделать это, поэтому я знаю, что это возможно, просто не уверен, как это сделать.
Спасибо, ребята!
PackageManager.getPackageInfo() возвращает информацию о пакете и PackageInfo.applicationInfo требуется информация о приложении.
/**
* 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;
}
Хорошо, я хотел бы отметить Юрия как ответ, но я уже знал об этом. Поэтому я просмотрел каждый вариант из 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();
}
Так что спасибо снова, ребята, снова заработали мой мозг Love StackOverflow!
в ответе выше нужно изменить pInfo на pm
как это
PackageManager pm = getPackageManager();
try {
ApplicationInfo ai = pm.getApplicationInfo(<packageName here>, 0);
String sourceApk = ai.publicSourceDir;
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
этот ответ от Сета