Получить Каталог Приложений
кто-нибудь знает, как мне получить путь к каталогу моего приложения? (например,/data/data/my.app.lication/
)
В настоящее время я использую этот метод: myActivity.getFilesDir().getParent();
но мне кажется, что это обходной путь, когда есть более простое решение. Кроме того, побочным эффектом является создание files
каталог, который не нужен.
пояснение: во - первых- спасибо за repliers. Я пытаюсь понять, если уже существует метод, который делает это, а не для другого обхода.
7 ответов:
PackageManager m = getPackageManager(); String s = getPackageName(); PackageInfo p = m.getPackageInfo(s, 0); s = p.applicationInfo.dataDir;
Если затмение беспокоится о непойманного
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); }
существует более простой способ получить каталог данных приложения с помощью min API 4+. Из любого контекста (например, деятельность, приложение):
getApplicationInfo().dataDir
http://developer.android.com/reference/android/content/Context.html#getApplicationInfo()
для текущего пакета приложений 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; }
Если вы пытаетесь получить доступ к файлу, попробуйте
openFileOutput()
иopenFileInput()
методы, как описано здесь. Они автоматически открывают потоки ввода/вывода в указанный файл во внутренней памяти. Это позволяет обойти каталог иFile
объекты в целом, что является довольно чистым решением.