Android:如何以编程方式获取apk文件的名称?

Reg*_*_AG 5 android file apk

由于某些原因,我的应用可以使用不同的apk名称进行安装。在启动时,我想知道apk文件的名称是什么。你知道怎么做吗 ?

谢谢 !

meh*_*avi 5

final PackageManager pm = getPackageManager();
String apkName = "example.apk";
String fullPath = Environment.getExternalStorageDirectory() + "/" + apkName;        
PackageInfo info = pm.getPackageArchiveInfo(fullPath, 0);
Run Code Online (Sandbox Code Playgroud)

你可以得到它:

info.versionCod
Run Code Online (Sandbox Code Playgroud)

info.versionName
Run Code Online (Sandbox Code Playgroud)

希望这对你有帮助


Vin*_*kla 1

尝试这个:

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);
Run Code Online (Sandbox Code Playgroud)

添加:

如果您没有获取 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...
}
Run Code Online (Sandbox Code Playgroud)

注意:将此权限添加到清单文件中:

<uses-permission android:name="android.permission.GET_TASKS" />
Run Code Online (Sandbox Code Playgroud)