French JSInterface

man90

Member
Licensed User
Longtime User
Bonjour a tous

Depuis toutes ces mises a jour de B4A ,je n'arrive plus a faire fonctionner JSInterface , l'HTML ne se sauvegarde plus dans mon DirRootExternal

Comment puis-je faire pour sauver un HTML d'un WebView sur mon DirRootExternal autrement qu'avec la methode JSInterface.

Salutation
 

klaus

Expert
Licensed User
Longtime User
Je n'ai jamais utilisé JSInterface.
Mais, le problème de la sauvegarde sur DirRootExternal vient des limitations introduites par Google dans Android.
Un moyen est d'utiliser la bibliothèque RuntimePermissions:
B4X:
Dim rs As RuntimePermissions

MonDossier = rs.GetSafeDirDefaultExternal("SousDossier")
Log(MonDossier)
Il est intéressant de mettre le Log permettant de voir où exactement se trouve ce dossier.
Si tu ne veux pas de SousDossier tu peux utiliser: rs.GetSafeDirDefaultExternal("")
 

man90

Member
Licensed User
Longtime User
Bonjour Klaus et merci pour la rapide reponse
Donc je dois crée un webveiw avec une adresse web?
 

man90

Member
Licensed User
Longtime User
Je fait comme cela:

myInterface.addJSInterface(WebView1, "B4A")''''''''''''''''new
WebView1.LoadUrl("http://meteofrance.com/previsions-meteo-france")

Sub WebView1_PageFinished (Url As String)''''''''''''''''''new
Dim jsStatement As String
jsStatement="B4A.CallSub('process_HTML', document.documentElement.outerHTML)"
Log("PageFinished: "&jsStatement)
myInterface.execJS(WebView1, jsStatement)
End Sub
Sub process_HTML(html As String)'''''''''''''''''''''''''''''new
Log("processHTML: "&html)
File.WriteString(File.DirRootExternal,"toi1.txt",html)'sauvegarde le fichier issue de web1 sur toi1.php.htm
End Sub


et je mon fichier html est dans le fichier toi.txt
 

klaus

Expert
Licensed User
Longtime User
Au lieu de:
File.WriteString(File.DirRootExternal,"toi1.txt",html)'sauvegarde le fichier issue de web1 sur toi1.php.htm
Essaies:
B4X:
Dim rs As RuntimePermissions
Dim MonDossier As String


MonDossier = rs.GetSafeDirDefaultExternal("")
File.WriteString(MonDossier,"toi1.txt",html)
Log(MonDossier) âffiche le nom du dossier.
Sur mom Samsung Galaxy S8, le dossier est:
/storage/emulated/0/Android/data/packagename/files
packagename est le nom du 'Package' que tu as défini dans Buid Configurations.
Je ne sais pas si le nom est le même sur tous les appareils.
 

man90

Member
Licensed User
Longtime User
sa ne veut pas , voila mon programme:

Sub Globals

Dim mondossier As String
Dim rs As RuntimePermissions
Private WebView1 As WebView

End Sub

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout1")
mondossier = rs.GetSafeDirDefaultExternal("")
WebView1.LoadUrl("http://astrologie.leparisien.fr/astrologie/zodiaque/verseau.html")
End Sub

Sub WebView1_PageFinished (Url As String)''''''''''''''''''new
End Sub

Sub process_HTML(html As String)'''''''''''''''''''''''''''''new
Log(mondossier)
File.Writestring(mondossier,"poi1.txt",html)'
End Sub
 

klaus

Expert
Licensed User
Longtime User
Est-ce que tu obtiens une erreur?
Qu'affiche Log(mondossier) ?
Où est défini html ?
Depuis où est appelé Sub process_HTML(html As String) ?

J'ai essayé ton code, mais j'obtiens une erreur
Page Web non disponible ERR_CLEARTEXT_NOT_PERMITTED.
J'ai ajouté la ligne ci-dessous dans le Manifest Editor:
CreateResourceFromFile(Macro, Core.NetworkClearText)
Et la page s'affiche.
Mais pour la suite, voir les questions ci-dessus, je ne sais pas.
Ne sachant pas d'où vient html, j'ai essayé de sauver un texte simple avec cette ligne:
File.Writestring(mondossier,"poi1.txt", "My test")
et ça fonctionne.
 

man90

Member
Licensed User
Longtime User
Bonjour
Vous me posez des questions un peu complexe pour moi,
Je vais continue a chercher , a bricoler.
Je vous tiens au courant de mes avancées
Salutation
 
Top