从Android设备programmaticaly检索* .apk文件名需要一些帮助吗?如果我只知道文件名中的一部分,那么任何机构都可以提供一些Android方法,甚至可以在Android下运行shell命令来获取文件位置吗?
此外,如果有一种方法可以找到从市场或外部市场下载后* .apk文件的去向?
提前谢谢。
答案 0 :(得分:35)
List<ApplicationInfo> PackageManager.getInstalledApplications()
会为您提供已安装应用程序的列表,ApplicationInfo.sourceDir
是.apk文件的路径。
PackageManager pm = getPackageManager();
for (ApplicationInfo app : pm.getInstalledApplications(0)) {
Log.d("PackageList", "package: " + app.packageName + ", sourceDir: " + app.sourceDir);
}
输出如下内容:
package: com.tmobile.themechooser, sourceDir: /system/app/ThemeChooser.apk
package: com.tmobile.thememanager, sourceDir: /system/app/ThemeManager.apk
package: com.touchtype.swiftkey, sourceDir: /data/app/com.touchtype.swiftkey-1.apk
package: com.twitter.android, sourceDir: /data/app/com.twitter.android-2.apk
package: fm.last.android, sourceDir: /data/app/fm.last.android-1.apk
答案 1 :(得分:16)
$ adb shell pm list packages -f
答案 2 :(得分:3)
这给了我路径/data/app/xxx.apk:
https://developer.android.com/reference/android/content/Context.html#getPackageResourcePath%28%29
答案 3 :(得分:2)
你也可以adb bugreport
查看输出。您需要查找<package name="com.app.package" codePath="path/to/the/app.apk"...
答案 4 :(得分:0)
您下载的应用转到/data/app
,因此使用ls
您可以获得已下载的应用列表。