• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Mis à jour le 30/04/2018

Créez un fichier sur le stockage interne

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Maintenant que nous savons correctement enregistrer du contenu sur l'espace de stockage externe, nous allons permettre à nos utilisateurs de sauvegarder leur texte sur l'espace de stockage interne de leur téléphone, afin de le protéger encore plus... :)

Du coup j'imagine que nous aurons encore besoin de demander la permission à l'utilisateur pour utiliser son espace de stockage interne non ?

Eh non, même pas ! Lorsque vous sauvegardez des informations sur l'espace de stockage interne du téléphone de vos utilisateurs, vous n'avez pas besoin de leur permission car cet espace est alloué uniquement à votre application... ;)

Ainsi dans ce chapitre, nous allons permettre à nos utilisateurs d'enregistrer leur texte (et par conséquent le fichier tripBook.txt) dans la mémoire interne de leur téléphone : 

  • Soit dans l'espace de stockage interne de l'application.

  • Soit dans le cache dédié de l'espace de stockage interne de l'application.

Mise à jour de l'activité

Passons aux choses sérieuses ! Puisque nous avons créé dans le précédent chapitre une classe utilitaire assez généraliste, StorageUtils, nous la réutiliserons ici (mais sans la modifier, c'est tout l'intérêt !).

Mettons à jour notre activité afin d'y appeler les méthodes appropriées quand l'utilisateur cliquera sur les boutons radios dédiés au stockage dans la mémoire interne.

Extrait de TripBookActivity :

public class TripBookActivity extends BaseActivity {

    ...

    // --------------------
    // ACTIONS
    // --------------------

    ...

    private void save(){
        if (this.radioButtonExternalChoice.isChecked()){
            this.writeOnExternalStorage(); //Save on external storage
        } else {
            // 3 - Save on internal storage
            this.writeOnInternalStorage();
        }
    }

    // ----------------------------------
    // UTILS - STORAGE
    // ----------------------------------

    @AfterPermissionGranted(RC_STORAGE_WRITE_PERMS)
    private void readFromStorage(){

        ...
        
        if (this.radioButtonExternalChoice.isChecked()){
            ...
        } else {

            // 2 - Read from internal storage
            if (radioButtonInternalVolatileChoice.isChecked()){
                // Cache
                this.editText.setText(StorageUtils.getTextFromStorage(getCacheDir(), this, FILENAME, FOLDERNAME));
            } else {
                // Normal
                this.editText.setText(StorageUtils.getTextFromStorage(getFilesDir(), this, FILENAME, FOLDERNAME));
            }
        }
    }

    ...

     // 1 - Write on internal storage
    private void writeOnInternalStorage(){
        if (radioButtonInternalVolatileChoice.isChecked()){
            StorageUtils.setTextInStorage(getCacheDir(), this, FILENAME, FOLDERNAME, this.editText.getText().toString());
        } else {
            StorageUtils.setTextInStorage(getFilesDir(), this, FILENAME, FOLDERNAME, this.editText.getText().toString());
        }
    }
}

Explications : Nous avons rajouté une méthode (1) dédiée à l'écriture dans notre fichier sur l'espace de stockage interne, et qui sera appelée par la méthode  save  (3) quand l'utilisateur cliquera sur le bouton "Enregistrer" de la Toolbar. Nous avons également modifié (2) la méthode  readFromStorage  afin de lire le fichier depuis l'espace de stockage interne, quand l'activité se lance ou quand l'utilisateur clique sur les boutons radios.

Et d'ailleurs, tout cela devrait vous rappeler quelque chose... ;) En effet, nous avons utilisé la même approche pour écrire et lire dans notre espace de stockage externe à travers le précédent chapitre, en appelant les méthodes  getTextFromStorage  et  setTextInStorage , et en changeant uniquement le paramètre correspondant au répertoire racine pour correspondre à celui de l'espace de stockage interne :

  • getFilesDir() : Cette méthode retournera le chemin d'accès (File) vers la racine de l'espace de stockage interne pour votre application.

  • getCacheDir() : Cette méthode retournera le chemin d'accès (File) vers la racine du cache de l'espace de stockage interne de votre application.

Lancez maintenant votre application et testez l'enregistrement de texte dans l'espace de stockage interne ! :)

Sauvegarde dans l'espace de stockage interne
Sauvegarde dans l'espace de stockage interne
Exemple de certificat de réussite
Exemple de certificat de réussite