我的应用程序是/ system吗?

时间:2010-02-12 18:12:28

标签: android system

我的应用程序可以在android上安装和运行,
在两个不同的地方:

"/data/MyApplication"  

"/system/MyApplication".

我需要知道安装我的应用程序的位置,
如果它在“/ data /”中或者在“/ system”中。

有人可以帮忙吗?

非常感谢

5 个答案:

答案 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路径

Using package manager (pm)

Some info on Android StackOverflow