French Copier un fichier

sultan87

Active Member
Licensed User
Longtime User
Bonjour
depuis un certain temps google interdit l'utilisation d'un fichier se trouvant sur '/storage/emulated/0/GestTherm/BD/GestTherm.db'
il faut utiliser '/storage/emulated/0/Android/data/gesttherm.fr/files/GestTherm/BD/GestTherm.db'
gesttherm.fr nom du package dans le manifest
je dois modifier mon appli qui fonctionnait avec '/storage/emulated/0/GestTherm/BD/GestTherm.db'
comment par code copier GestTherm.db dans '/storage/emulated/0/Android/data/gesttherm.fr/files/GestTherm/BD/GestTherm.db'
Pierre
 

klaus

Expert
Licensed User
Longtime User
Tu as sûrement défini un répertoire avec RuntimePermission.GetSafeDirDefaultExternal("")
Qui te donne: /storage/emulated/0/Android/data/gesttherm.fr/files MainPath dans l'exemple ci-dessous.
gesttherm.fr doit être le PackageName dans Build Configurations dans le menu Project
Tu peux ajouter des sous-répertoires avec File.MakeDir du style:
File.MakeDir(MainPath, "GestTherm/BD") crée les sous-répertoires GestTherm et BD
Tu peux ensuite gérer les fichiers comme d'habitude.
B4X:
Private rp As RuntimePermissions
Private MainPath, DBPath As STring
MainPath = rp.GetSafeDirDefaultExternal("")
File.MakeDir(MainPath, "GestTherm/BD")
DBPath = MainPath & "/GestTherm/BD"
File.Copy(File.DirAssets, "GestTherm.db", DBPath, GestTherm.db)
 

sultan87

Active Member
Licensed User
Longtime User
bonjour klaus
j'ai suivi tes conseils
je comprends le DBPath est le directory de réception
pour moi /storage/emulated/0/Android/data/gesttherm.fr/files/GestTherm/BD
ma directory d'émission est /storage/emulated/0/GestTherm/BD
pour le File.Copy si je fait
File.Copy(File.DirAssets, "GestTherm.db", DBPath, GestTherm.db)
j'ai ce message d'erreur
java.io.FileNotFoundException: /storage/emulated/0/GestTherm/BD/GestTherm.db: open failed: EACCES (Permission denied)
pouvez vous m'aider
Pierre
 

klaus

Expert
Licensed User
Longtime User
Désolé mais j'ai de la peine à suivre.
Vu que je ne connais pas les détails de ta gestion des fichiers, File.Copy(File.DirAssets, "GestTherm.db", DBPath, GestTherm.db) n'était qu'un exemple.
Est-ce que le répertoire /storage/emulated/0/Android/data/gesttherm.fr/files/GestTherm/BD existe ?
L'as-tu défini ?
Si non, il faut le définir.
Est-ce que tu as toujours accès, avec l'explorateur de fichiers Windows, au répertoire /storage/emulated/0/GestTherm/BD avec l'explorateur de fichiers Windows?
Si oui, copies le fichier de ce répertoire dans le répertoire /storage/emulated/0/Android/data/gesttherm.fr/files/GestTherm/BD/GestTherm.db. Et ça devrait jouer.
Si non, as-tu ce fichier quelque part ailleurs ?
Si oui, copies le dans le nouveau répertoire.
Si non, j'ai peur peur que les données soient perdues.
 

sultan87

Active Member
Licensed User
Longtime User
merci pour la réponse
l'applicatif que j'ai écrit este fait pour gérer les température et mettre en route la chaudière à distance
cette appli je l'ai donné à 3 amis qui ne connaisse rien en informatique
pour mon compte personnel j'ai effectivement fait ce que tu dis à la main
cela fonctionne correctement
c'est pourquoi, pour mes amis je voudrais modifier l'appli qui va créer le répertoire /storage/emulated/0/Android/data/gesttherm.fr/files/GestTherm/BD/
cela fonctionne
mais je voudrais copier la bd qui se trouve /storage/emulated/0/GestTherm/BD/GestTherm.db dans le répertoire /storage/emulated/0/Android/data/gesttherm.fr/files/GestTherm/BD/
en faisant File.Copy(File.DirAssets, "GestTherm.db", DBPath, GestTherm.db) ou DBPath est /storage/emulated/0/Android/data/gesttherm.fr/files/GestTherm/BD/
j'ai le message d'erreur cité plus haut
Pierre
 

klaus

Expert
Licensed User
Longtime User
mais je voudrais copier la bd qui se trouve /storage/emulated/0/GestTherm/BD/GestTherm.db
C'est justement le problème.
Les nouvelles restrictions de Google interdisent l'accès direct à ce répertoire.
Est-ce que ton application est sur Playstore ?
Si oui, pas de solution à ma connaissance.
Si non, essaies de mettre dans le Manifest targetSdkVersion à 26, peut être ça fonctionne:
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26"/>
 

sultan87

Active Member
Licensed User
Longtime User
Bonjour Klaus
mon application n'est pas sur Playstore
j'ai changé dans le manifest
mème problème
je vais essayer de faire les changements à la main en dirigeant mes amis
encore merci de l'aide
Pierre
 
Top