Dans App Inventor, l'élément Fichier peut avoir un DefaultScope coché à App, Assets, Legacy, Private ou Shared. Que signifient ces gtermes
Dans App Inventor, l'élément Fichier dispose d'une propriété appelée DefaultScope, qui détermine où les fichiers sont lus ou écrits. Voici une explication des différentes options disponibles pour le DefaultScope :
Les options de DefaultScope :
App :
Les fichiers sont stockés dans un répertoire spécifique à l'application sur le stockage externe.
Ce mode est recommandé pour la plupart des applications modernes.
Compatible avec Android 2.2 et versions ultérieures.
Asset :
Les fichiers sont lus à partir des ressources intégrées à l'application (assets).
Ces fichiers sont en lecture seule et ne peuvent pas être modifiés ou écrits.
Legacy :
Utilise les règles de stockage des versions antérieures d'App Inventor (avant la version nb187).
Les fichiers sont lus ou écrits dans le répertoire racine du stockage externe (ex. : /sdcard/).
Ce mode est obsolète et ne fonctionne pas sur Android 11 ou versions ultérieures.
Private :
Les fichiers sont stockés dans le répertoire privé de l'application.
Ce mode est utilisé pour des données sensibles qui ne doivent pas être accessibles par d'autres applications ou utilisateurs.
Shared :
Les fichiers sont placés dans les répertoires partagés du système, comme les dossiers Pictures, Music, ou Downloads.
Idéal pour partager des fichiers avec d'autres applications ou rendre les fichiers visibles pour l'utilisateur.
Utilisation recommandée :
Le mode App est généralement suffisant pour la plupart des applications modernes.
Si vous avez besoin d'accéder à des ressources intégrées, utilisez Asset.
Pour des données sensibles, préférez le mode Private.
Évitez le mode Legacy, sauf si vous travaillez avec de très anciennes versions d'Android.
Utilisez Shared pour rendre les fichiers accessibles dans les répertoires publics du système.
exemples de code
Bien sûr, je vais vous donner quelques exemples de code pour illustrer l'utilisation des différents DefaultScope dans App Inventor. Notez que dans App Inventor, le code est principalement créé via une interface graphique de blocs, mais je vais décrire les actions et les blocs à utiliser pour chaque exemple.
1. App Scope
Exemple : Sauvegarder un score dans un fichier
1.
Utiliser un composant Fichier avec DefaultScope réglé sur "App"
2.
Utiliser le bloc "call Fichier1.WriteFile" avec :
-
fileName : "score.txt"
- text : un bloc contenant le
score (par exemple, une variable globale scoreActuel)
3. Pour lire
le score :
- Utiliser le bloc "call Fichier1.ReadFrom"
avec fileName : "score.txt"
2. Assets Scope
Exemple : Lire un fichier de configuration depuis les assets
1.
Ajouter un fichier "config.txt" dans les assets du
projet
2. Utiliser un composant Fichier avec DefaultScope réglé
sur "Assets"
3. Utiliser le bloc "call
Fichier1.ReadFrom" avec :
- fileName : "config.txt"
4.
Le contenu sera disponible dans le bloc "got text"
3. Private Scope
Exemple : Stocker un token d'authentification
1.
Utiliser un composant Fichier avec DefaultScope réglé sur
"Private"
2. Pour sauvegarder le token :
-
Utiliser le bloc "call Fichier1.WriteFile" avec :
-
fileName : "auth_token.txt"
- text : le token
d'authentification
3. Pour lire le token :
- Utiliser le
bloc "call Fichier1.ReadFrom" avec :
- fileName :
"auth_token.txt"
4. Shared Scope
Exemple : Sauvegarder une image dans le dossier Pictures
1.
Utiliser un composant Fichier avec DefaultScope réglé sur
"Shared"
2. Après avoir capturé une image avec le
composant Camera :
- Utiliser le bloc "call
Fichier1.SaveFile" avec :
- fileName :
"Pictures/mon_image.jpg"
- content : le bloc
contenant l'image capturée
5. Legacy Scope (à éviter sur les versions récentes d'Android)
Exemple : Lire un fichier à la racine du stockage externe
1.
Utiliser un composant Fichier avec DefaultScope réglé sur
"Legacy"
2. Utiliser le bloc "call
Fichier1.ReadFrom" avec :
- fileName : "mon_fichier.txt"
(Cela lira le fichier depuis la racine du stockage externe, par
exemple /sdcard/mon_fichier.txt)
Rappelez-vous que ces exemples sont conceptuels et que la mise en œuvre exacte dépendra de la structure de votre application et des autres composants que vous utilisez. De plus, il est toujours recommandé de gérer les erreurs potentielles lors des opérations de lecture/écriture de fichiers.
Donner un exemple de code App Inventor utilisant le SAF
Voici un exemple de code App Inventor utilisant le SAF (Storage Access Framework) pour créer et écrire dans un fichier texte :
//
Ouvrir le sélecteur de dossier
when Button1.Click
do
SAF1.OpenDocumentTree("Sélectionnez un dossier")
end
//
Créer et écrire dans le fichier
when SAF1.GotUri
do
SAF1.CreateDocument(get uri, "mon_fichier.txt",
"text/plain")
end
when SAF1.DocumentCreated
do SAF1.WriteToFile(get uriString, "Contenu du fichier")
end
//
Afficher le résultat
when SAF1.GotWriteResult
if get
response = get uriString then
Notifier1.ShowAlert("Fichier
créé et écrit avec succès")
else
Notifier1.ShowAlert("Erreur : " + get response)
end
end
Ce code permet de :
Ouvrir un sélecteur de dossier lorsque l'utilisateur clique sur un bouton.
Créer un nouveau fichier texte nommé "mon_fichier.txt" dans le dossier sélectionné.
Écrire le contenu "Contenu du fichier" dans le fichier créé.
Afficher une notification indiquant si l'opération a réussi ou échoué.
Pour utiliser ce code, vous devez d'abord ajouter l'extension SAF à votre projet App Inventor. Assurez-vous également d'avoir les composants Button1 et Notifier1 dans votre interface utilisateur[1][2].