Подтвердить что ты не робот

Получить каталог приложений

Кто-нибудь знает, как мне получить путь к каталогу приложений? (например, /data/data/my.app.lication/)

В настоящее время я использую этот метод: myActivity.getFilesDir().getParent();, но мне кажется, что это обходное решение, когда есть более простое решение. Кроме того, побочным эффектом является создание каталога files, который не нужен.

Уточнение: во-первых - Спасибо за ответчиков. Я пытаюсь понять, существует ли уже метод, который делает это, а не для другого рабочего процесса.

4b9b3361

Ответ 1

PackageManager m = getPackageManager();
String s = getPackageName();
PackageInfo p = m.getPackageInfo(s, 0);
s = p.applicationInfo.dataDir;

Если eclipse беспокоится о неперемещенном NameNotFoundException, вы можете использовать:

PackageManager m = getPackageManager();
String s = getPackageName();
try {
    PackageInfo p = m.getPackageInfo(s, 0);
    s = p.applicationInfo.dataDir;
} catch (PackageManager.NameNotFoundException e) {
    Log.w("yourtag", "Error Package name not found ", e);
}

Ответ 3

Я получил это

String appPath = App.getApp().getApplicationContext().getFilesDir().getAbsolutePath();

отсюда:

Ответ 4

Просто используйте это в своем коде

 context.getApplicationInfo().dataDir

Ответ 5

Для текущего пакета приложений Android:

public String getDataDir(final Context context) throws Exception {
    return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).applicationInfo.dataDir;
}

Для любого пакета:

public String getAnyDataDir(final Context context, final String packageName) throws Exception {
    return context.getPackageManager().getPackageInfo(packageName, 0).applicationInfo.dataDir;
}

Ответ 6

Если вы пытаетесь получить доступ к файлу, попробуйте методы openFileOutput() и openFileInput(), как описано здесь. Они автоматически открывают потоки ввода/вывода в указанный файл во внутренней памяти. Это позволяет обойти каталог и File объекты в целом, что является довольно чистым решением.

Ответ 7

На основе решения @jared-burrows. Для любого пакета, но передавая контекст как параметр...

public static String getDataDir(Context context) throws Exception {
    return context.getPackageManager()
            .getPackageInfo(context.getPackageName(), 0)
            .applicationInfo.dataDir;
}