Мое приложение в / system? - PullRequest
       12

Мое приложение в / system?

0 голосов
/ 12 февраля 2010

Мое приложение можно установить и запустить на Android,
в двух разных местах:

"/data/MyApplication"  

и

"/system/MyApplication".

Мне нужно знать, где в данный момент установлено мое приложение,
если он находится в "/ data /" или если он находится в "/ system".

Кто-нибудь может помочь?

Большое спасибо

Ответы [ 5 ]

3 голосов
/ 12 февраля 2010

Получите, где ваше приложение установлено

getPackageManager().getApplicationInfo(getPackageName(), 0).sourceDir

однако это не должно быть важно для вашего приложения. Зачем тебе это?

2 голосов
/ 12 февраля 2010

Пожалуйста, не вводите жесткие проверки в пути к каталогам.

Вы можете узнать, что ваше приложение является частью встроенного образа системы с помощью ApplicationInfo.FLAG_SYSTEM. Но, как говорит другой автор, для этого должно быть несколько причин ... и обратите внимание, что если на Маркете на устройстве, на котором оно установлено, установлена ​​более новая версия вашего приложения, FLAG_SYSTEM все равно будет установлен, поскольку по-прежнему эффективно системное приложение.

1 голос
/ 12 февраля 2010

Вы можете использовать ADB, чтобы узнать:

$ adb shell ls / data

или

$ adb shell ls / system

Или вы хотите эту проверку во время выполнения из вашего приложения. В этом случае вы можете использовать

System.getProperty ( "user.dir")

в вашем коде Java.

0 голосов
/ 14 февраля 2014

Я бы порекомендовал для этого использовать менеджер пакетов. 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 данного пакета

Использование диспетчера пакетов (вечера)

Некоторая информация об Android StackOverflow

0 голосов
/ 25 октября 2013

Пожалуйста, используйте приведенный ниже жесткий код, чтобы найти путь к установленному пользователем пути приложения в / data или / system:

PackageInfo paramPackageInfo = null;
        try {
            paramPackageInfo = getPackageManager().getPackageInfo(
                    getPackageName(), 0);
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }

ApplicationInfo localApplicationInfo = paramPackageInfo.applicationInfo;

Для найденного имени пакета: localApplicationInfo.packageName

К найденному пути приложения: localApplicationInfo.sourceDir

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...