Android: как программно получить название файла apk? - PullRequest
5 голосов
/ 30 сентября 2011

По некоторым причинам мое приложение может быть установлено с разными именами apk.При запуске хотелось бы узнать как называется файл apk.Вы знаете, как это сделать?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 18 января 2016
final PackageManager pm = getPackageManager();
String apkName = "example.apk";
String fullPath = Environment.getExternalStorageDirectory() + "/" + apkName;        
PackageInfo info = pm.getPackageArchiveInfo(fullPath, 0);

Вы можете получить его с помощью:

info.versionCod

и

info.versionName

надеюсь, что это поможет вам

2 голосов
/ 18 января 2017

Имя apk или приложения можно получить с помощью менеджера пакетов.Согласно ответу Алекса здесь - https://stackoverflow.com/a/30348666/2026280

Предполагается, что у вас есть путь к файлу apk.

public static String getAppLabel(PackageManager pm, String pathToApk) {  
PackageInfo packageInfo = pm.getPackageArchiveInfo(pathToApk, 0);

if (Build.VERSION.SDK_INT >= 8) {
    // those two lines do the magic:
    packageInfo.applicationInfo.sourceDir = pathToApk;
    packageInfo.applicationInfo.publicSourceDir = pathToApk;
}

CharSequence label = pm.getApplicationLabel(packageInfo.applicationInfo);
return label != null ? label.toString() : null;
}
1 голос
/ 30 сентября 2011

попробуйте это:

ActivityManager actMngr = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
string runningPkg = actMngr.getRunningTasks(1).get(0).topActivity.getPackageName();

PackageManager pm = context.getPackageManager();
ApplicationInfo ai = pm.getApplicationInfo(runningPkg , 0);

Добавлено:

Если вы не получаете имя apk, вы можете сравнить его с установленным pkg и получить соответствующее имя приложения.Вы можете получить имя pkg и имя установленного приложения следующим образом:

ArrayList<PackageInfo> res = new ArrayList<PackageInfo>();
PackageManager pm = ctx.getPackageManager();
List<PackageInfo> packs = pm.getInstalledPackages(0);

for(int i=0;i<packs.size();i++) {
    PackageInfo p = packs.get(i);
    String description = (String) p.applicationInfo.loadDescription(pm);
    String  label= p.applicationInfo.loadLabel(pm).toString();
//Continue to extract other info about the app...
}

Примечание. Добавьте это разрешение в файл манифеста:

<uses-permission android:name="android.permission.GET_TASKS" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...