Je suis très nouveau sur Android développement et j'ai besoin d'une aide pour débutants s'il vous plaît ...
Je crée une application qui devrait avoir 2 répertoires, un répertoire de bases de données et un répertoire d'images, tout comme Whatsapp.
Je veux voir ces répertoires dans le Gestionnaire de fichiers lorsque je parcours mon téléphone, tout comme vous voyez les autres dossiers d'applications. J'ai essayé tout ce que j'ai trouvé ici, pour le créer dans le stockage interne et dans le stockage externe à partir du code. Les dossiers semblent avoir été créés, mais lorsque j'ai parcouru le gestionnaire de fichiers de mon téléphone, je n'ai pas trouvé le dossier avec le nom de mon application et à l'intérieur mes dossiers Bases de données et Images ... Que fais-je de mal? dois-je créer ces dossiers dans le Android studio comme ajout de dossiers? ou dois-je le créer à partir du code?
Pouvez-vous s'il vous plaît me donner les actions que je dois faire pour accomplir cette tâche? J'utilise Android studio 3.1.3. Merci pour les aides! :)
Les termes " Stockage interne" et " Stockage externe" peuvent être déroutants au début, car les intentions de Google sont différentes de ce que nous attendons et savons de nos jours -Utilisation courante du langage: "Externe" ne signifie pas nécessairement la "Carte SD". Ce gars a fait un excellent article sur la confusion terminologique
Selon vos intentions, vous voudriez travailler avec le concept de stockage externe . Les différences sont bien expliquées dans le Documentation , mais je vais vous les expliquer brièvement ici.
À la fin, je vais vous donner un exemple, mais nous allons d'abord connaître les bases:
Stockage interne
Stockage externe
Alors maintenant que nous savons que vous avez besoin d'un stockage externe, il y a plusieurs choses à faire avant de commencer:
Manifest.xml
, Selon vos besoins: <manifest ...>
<uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
Chaque autorisation est indépendante, ce qui signifie que vous n'avez pas besoin des deux si, par exemple, vous souhaitez uniquement lire des fichiers au lieu de les écrire
Dans la méthode donnée, nous enregistrerons un fichier texte dans le répertoire racine.
Crédits à cet article
public void writeFileExternalStorage() {
//Text of the Document
String textToWrite = "bla bla bla";
//Checking the availability state of the External Storage.
String state = Environment.getExternalStorageState();
if (!Environment.MEDIA_MOUNTED.equals(state)) {
//If it isn't mounted - we can't write into it.
return;
}
//Create a new file that points to the root directory, with the given name:
File file = new File(getExternalFilesDir(null), filenameExternal);
//This point and below is responsible for the write operation
FileOutputStream outputStream = null;
try {
file.createNewFile();
//second argument of FileOutputStream constructor indicates whether
//to append or create new file if one exists
outputStream = new FileOutputStream(file, true);
outputStream.write(textToWrite.getBytes());
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Je voudrais répondre spécifiquement à certaines de vos questions:
dois-je créer ces dossiers dans le studio Android comme ajout de dossiers? ou dois-je le créer à partir du code?
Certainement pas via le Android Studio. Ce sont vos dossiers de projets, contenant votre code. La façon de le faire est mentionnée ci-dessus.
Je n'ai pas trouvé le dossier avec le nom de mon application et à l'intérieur mes dossiers Bases de données et Images ... Qu'est-ce que je fais mal?
Probablement enregistré vos fichiers en tant que stockage interne/les a enregistrés en tant que dossiers de projet comme vous l'avez mentionné plus tôt - et ceux-ci ne s'afficheraient pas (et ne devraient pas).
Choses utiles à savoir
Il existe 2 types d'annuaires: public et privé.
Privé
getExternalFilesDir(...)
Exemple: le répertoire WhatsApp
(dans mon téléphone) est situé juste au niveau racine. L'appeler serait: getExternalFilesDir("WhatsApp/...")
Public (Bibliothèque Téléchargements/Films/Images)
Environment.getExternalStoragePublicDirectory(...)
Exemple: obtenir le dossier Documents
ressemblerait à: Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)