web-dev-qa-db-fra.com

Android Obtenir le répertoire de données 'Accueil' de l'application

Une question simple, relative au répertoire par défaut 'home' lorsqu'une application écrit dans la mémoire interne. Par défaut, tous les fichiers créés sont placés par le système d'exploitation (2.2) dans:

/data/data/your.package/files

Lors de la lecture de fichiers, la même valeur par défaut est utilisée, lorsque vous conservez le contexte approprié via openFileInput(), openFileOutput(). Mais si j'ai besoin de vérifier l'existence d'un fichier, par exemple, en utilisant la classe File, je dois spécifier le chemin d'accès complet dans le constructeur.

Je vois qu'il y a Environment.getDataDirectory() (renvoie /data), Environment.getRootDirectory() (renvoie /system), Etc., mais rien de lié à l'obtention de la "maison" de l'application annuaire.

Ce n’est pas une grosse affaire, mais je préférerais ne pas coder en dur le chemin complet dans mon App for File à utiliser (dire que le nom du paquet change, dites que le chemin change dans une version ultérieure du système d’exploitation) s'il existe un moyen de référencer le fichier. le répertoire "personnel" de l'application par programme.

49
Paul Mennega

Bien sûr, n'échoue jamais. Nous avons trouvé la solution environ une minute après avoir posé la question ci-dessus ... solution pour ceux qui auraient pu avoir le même problème:

ContextWrapper.getFilesDir()

Trouvé ici .

93
Paul Mennega

Vous pouvez essayer Context.getApplicationInfo().dataDir si vous souhaitez que le dossier de données persistant du package.

getFilesDir() renvoie une sous-racine de ceci.

35
Learn OpenGL ES

Pour obtenir le chemin du fichier dans le package d'application;

ContextWrapper c = new ContextWrapper(this);
Toast.makeText(this, c.getFilesDir().getPath(), Toast.LENGTH_LONG).show();
14
Ali Imran