我的应用程序可以在android上安装和运行,
在两个不同的地方:
"/data/MyApplication"
和
"/system/MyApplication".
我需要知道安装我的应用程序的位置,
如果它在“/ data /”中或者在“/ system”中。
有人可以帮忙吗?
非常感谢
答案 0 :(得分:3)
通过
获取应用程序的安装位置getPackageManager().getApplicationInfo(getPackageName(), 0).sourceDir
然而,这对您的应用程序来说并不重要。 你为什么需要它?
答案 1 :(得分:2)
请不要将检查硬编码到目录路径。
您可以使用ApplicationInfo.FLAG_SYSTEM找出您的应用程序是内置系统映像的一部分。但正如另一张海报所说,应该没有什么理由需要这样做......请注意,如果您的应用程序的较新版本是在捆绑了它的设备上从Market安装的,那么FLAG_SYSTEM仍将设置,因为它是仍然是一个系统应用程序。
答案 2 :(得分:1)
您可以使用adb查找:
$ adb shell ls / data
或
$ adb shell ls / system
或者您希望在运行时从应用程序中进行此检查。在这种情况下,您可以使用
System.getProperty( “user.dir来”)
在Java代码中。
答案 3 :(得分:0)
请使用以下硬编码在/ data或/ system中找到用户安装的应用程序路径的位置:
PackageInfo paramPackageInfo = null;
try {
paramPackageInfo = getPackageManager().getPackageInfo(
getPackageName(), 0);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
ApplicationInfo localApplicationInfo = paramPackageInfo.applicationInfo;
找到包名称:localApplicationInfo.packageName
找到申请路径:localApplicationInfo.sourceDir
答案 4 :(得分:0)
我建议使用包管理器工具。 adb shell pm path your.package.name
使用样本:
#List all installed packages
$ adb shell pm list packages
package:com.android.soundrecorder
....
package:com.android.email # <-- System app
....
package:course.labs.intentslab.test # <-- Custom app
#Path for system app:
$ adb shell pm path com.android.email
package:/system/app/Email.apk
#Path for regular app:
$ adb shell pm path course.labs.intentslab.test
package:/data/app/course.labs.intentslab.test-1.apk
来自文档:
路径包装打印给定包装的APK路径