French initialize database

sultan87

Active Member
Licensed User
Longtime User
Bonjour
j'utilise une base de données
jusqu'à présent je n'avais pas de problème
aujourd’hui j'ai ce message d'erreur
android.database.sqlite.SQLiteCantOpenDatabaseException: Cannot open database '/storage/emulated/0/GestTherm/BD/GestTherm.db' with flags 0x10: File /storage/emulated/0/GestTherm/BD/GestTherm.db is not readable
je n'ai rien fait de particulier
pouvez vous m'aider
cordialement
pierre
 

klaus

Expert
Licensed User
Longtime User
Le problème vient des restriction que Google impose pour l'accès à la mémoire.
L'accès à File.DirRootExternal n'est plus possible.
Est-ce que ta base de données doit être accessible depuis l'extérieur ?
Si non, donc seul ton programme y a accès, la solution ci-dessus est la bonne.
Si oui, seul un accès par USB avec un ordinateur est possible, peut-être que Google supprimera aussi cet accès dans le futur.
B4X:
    Public rp As RuntimePermissions
    Repertoire = rp.GetSafeDirDefaultExternal("")
    Log(Repertoire)   'permet d'afficher le chemin complet du répertoire
Sur le téléphone, le répertoire est sous: /storage/emulated/0/Android/data/xxx.yyyy
xxx.yyyy est le Package Name que tu as mis dans "Build Configuration" ("Construire la configuration") dans le menu Projet.
Sur le PC, le répertoire se trouve sous Android/Data/xxx.yyyy
 

sultan87

Active Member
Licensed User
Longtime User
bonsoir
merci pour les réponses
ma base de données se trouve sur mon smartphone
/storage/emulated/0/GestTherm/BD/GestTherm.db
dans mon code j'ai
Dim MyPath_Local As String
Dim SQL1 As SQL
MyPath_Local = File.DirRootExternal & "/"
SQL1.Initialize(MyPath_Local & "GestTherm/BD/", "GestTherm.db",False)
je ne comprends pas ce que je dois faire pour que l'appli fonctionne à nouveau
Pierre
 

klaus

Expert
Licensed User
Longtime User
J'ai l'impression que tu as mal lu mon message:
L'accès à File.DirRootExternal n'est plus possible.
Je répète : L'accès à File.DirRootExternal n'est plus possible !!!
Essayes ceci:
B4X:
    Public rp As RuntimePermissions
    MyPath_Local = rp.GetSafeDirDefaultExternal("GestTherm/BD")
 

sultan87

Active Member
Licensed User
Longtime User
Merci Klaus
j'avais bien compris, je ne fais que mon mon code existant
en modifiant comme suit
Public rp As RuntimePermissions
MyPath_Local = rp.GetSafeDirDefaultExternal("GestTherm/BD/")
Log(MyPath_Local)
j'obtiens
/storage/emulated/0/Android/data/b4a.example/files/GestTherm/BD
qui ne correspond pas à l'emplacement de ma bd
j'ai dû louper quelque chose
Pierre
 

sultan87

Active Member
Licensed User
Longtime User
le problème est que j'ai donné cette appli à plusieurs amis qui n'y connaissent rien en informatique
il faudrait que je fasse un module qui copie la bd si elle n'existe pas dans ce répertoire
merci
 

klaus

Expert
Licensed User
Longtime User
Quelle valeur as-tu dans le Manifest dans android:targetSdkVersion ?
Essaies les valeurs ci-dessous, peut-être ça fonctionne encore, mais jusqu'à quand, Google va ou a déjà supprimé la possibilité.
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26"/>
 

sultan87

Active Member
Licensed User
Longtime User
Quelle valeur as-tu dans le Manifest dans android:targetSdkVersion ?
Essaies les valeurs ci-dessous, peut-être ça fonctionne encore, mais jusqu'à quand, Google va ou a déjà supprimé la possibilité.
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26"/>
Bonjour Klaus
j'ai essayé mais cela ne fonctionne pas, mème message d'erreur
j'essaye de copier la bd dans le nouveau répertoire
Pierre
 

sultan87

Active Member
Licensed User
Longtime User
merci Klaus
j'ai fait la modif
cela fonctionne
apparemment je rencontre un autre soucis avec send_sms problème de permission
je regarde
 

latietude

Member
Quelle valeur as-tu dans le Manifest dans android:targetSdkVersion ?
Essaies les valeurs ci-dessous, peut-être ça fonctionne encore, mais jusqu'à quand, Google va ou a déjà supprimé la possibilité.
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26"/>
Bonjour, j’ai aussi une application qui contient une base de données et je vous demande : que faire pour ne pas perdre les données contenues dans l’application lorsque je désinstalle l’application à partir de mon téléphone afin que je puisse les récupérer lors de la réinstallation ?

Avant, on pouvait utiliser File.DirRootExternal et tout fonctionnait bien parce que la base de données restait là même après la désinstallation de l’application et on pouvait récupérer plus tard, maintenant que nous sommes obligés d’utiliser rp.GetSafeDefaultExternal, lorsque nous désinstallons l’application, tous les dossiers avec ce qu’il y a dedans disparaissent également.

Merci à l’avance
 
Top