程序化获取 Android 设备中的 *.apk 文件名需要帮助吗?是否有任何 Android 方法可以提供此功能,或者在 Android 下运行的 shell 命令可以获取文件位置,如果我只知道文件名的一部分?
另外,如果有一种方法可以找出从市场或市场外下载后 *.apk 文件的位置在哪里?
预先感谢您。
程序化获取 Android 设备中的 *.apk 文件名需要帮助吗?是否有任何 Android 方法可以提供此功能,或者在 Android 下运行的 shell 命令可以获取文件位置,如果我只知道文件名的一部分?
另外,如果有一种方法可以找出从市场或市场外下载后 *.apk 文件的位置在哪里?
预先感谢您。
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
$ adb shell pm list packages -f
您也可以执行adb bugreport
并查看输出。您需要查找<package name="com.app.package" codePath="path/to/the/app.apk"...
你下载的应用程序会存储在/data/app
目录下,因此可以使用ls
命令获取已下载apk文件的列表。
if (fileList != null)
{
for ( int i = 0;i - asteroidg
/sdcard/download
。用户可以移动此文件或更改目录。一旦应用程序安装完成(通过使用安装程序打开 apk),它就不再是 APK 了 - 因此,简而言之,您无法保证会找到该应用程序的 apk(尝试下载一个应用程序,安装它,然后删除 apk)。 - Basic