Est-ce que quelqu'un sait comment obtenir le chemin de mon répertoire d'application? (par exemple /data/data/my.app.lication/
)
Actuellement, j'utilise cette méthode: myActivity.getFilesDir().getParent();
, mais cela me semble une solution de contournement lorsqu'il existe une solution plus simple. En outre, l’effet secondaire est la création du répertoire files
, qui n’est pas nécessaire.
Clarification: Premier - Merci pour les réplicateurs. J'essaie de comprendre s'il existe déjà une méthode qui le fait, pas pour une autre solution de rechange.
PackageManager m = getPackageManager();
String s = getPackageName();
PackageInfo p = m.getPackageInfo(s, 0);
s = p.applicationInfo.dataDir;
Si Eclipse s'inquiète d'un NameNotFoundException
non capturé _, vous pouvez utiliser:
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);
}
Il existe un moyen plus simple d’obtenir le répertoire de données de l’application avec min API 4+. À partir de n'importe quel contexte (par exemple, activité, application):
getApplicationInfo().dataDir
http://developer.Android.com/reference/Android/content/Context.html#getApplicationInfo ()
J'ai ce
String appPath = App.getApp().getApplicationContext().getFilesDir().getAbsolutePath();
Il suffit d'utiliser ceci dans votre code
context.getApplicationInfo().dataDir
Pour le package d’application actuel Android:
public String getDataDir(final Context context) throws Exception {
return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).applicationInfo.dataDir;
}
Pour tout forfait:
public String getAnyDataDir(final Context context, final String packageName) throws Exception {
return context.getPackageManager().getPackageInfo(packageName, 0).applicationInfo.dataDir;
}
Basé sur la solution de @ jared-burrows. Pour n'importe quel paquet, mais en passant le contexte comme paramètre ...
public static String getDataDir(Context context) throws Exception {
return context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0)
.applicationInfo.dataDir;
}
Si vous essayez d'accéder à un fichier, essayez les méthodes openFileOutput()
et openFileInput()
comme décrit ici . Ils ouvrent automatiquement les flux d’entrée/sortie vers le fichier spécifié dans la mémoire interne. Cela vous permet de contourner le répertoire et les objets File
, ce qui est une solution plutôt propre.