ich zeige in meiner App eine HTML-Seite in einem Webview als Hilfe-Datei.
Um dem User die einfache Möglichkeit des Ausdruckes zu geben möchte ich diese Seite entweder im Browser anzeigen oder in eine PDF-Datei konvertieren und anzeigen.
Das Problem dabei scheint der interne Speicherort der HTML-Seite zu sein.
B4X:
Dim wv As WebView
wv.Initialize("")
'
pnlH.AddView(wv,0,0,80%x,75%y)
wv.LoadUrl("file:///android_asset/hilfe.html")
'
jedenfalls geht es so nicht:
B4X:
Dim P As PhoneIntents
StartActivity(P.OpenBrowser("file:///android_asset/hilfe.html"))
Hello B4A Team, I would like to bring to your attention an issue that significantly affects the development of hybrid applications in B4A. Over the past few years, I have noticed that support for loading local HTML files using the path file:///android_asset/www/index.html has been discontinued...
Ich dachte, dass es hilfreich sein könnte, die URL auf sichere Weise zu bilden, also z.B. über xui.FileUri(File.DirAssets, "test.htm")
Ich kann mir aber generell nicht vorstellen, dass eine fremde App, die per Intent gestartet wird, überhaupt auf die Assets einer anderen App zugreifen darf.
Möglicherweise würde es klappen, wenn du die Html-Datei zunächst in einen anderen Ordner kopierst, auf den der per Intent gestartete Browser zugreifen darf.
ich möchte, dass die Browseranzeige auch offline funktioniert.
Ich habe es jetzt soweit, dass sich die HTML-Seite öffnet, aber nicht im Browser sondern im Editor.
Was muss ich bitte beim IntentType ändern, um die Seite im Browser anzuzeigen?
B4X:
Dim FileName As String = "hilfe.html"
Dim provider As FileProvider
provider.Initialize
'Copy the file to the shared directory
Wait For (File.CopyAsync(File.DirAssets, "hilfe.html", Starter.Provider.SharedFolder, FileName)) Complete (Success As Boolean)
'
If Success = False Then
Log("Android - Error: Failed to copy the file " & FileName & " to the shared directory.")
Return
Else
Log("Android - File copy " & FileName & " successful: ")
End If
'
' Configure the Intent to open the file
Dim docIntent As Intent
docIntent.Initialize(docIntent.ACTION_VIEW, "")
provider.SetFileUriAsIntentData(docIntent, FileName)
docIntent.SetType("application/html")
docIntent.Flags = Bit.Or(1, 2) ' FLAG_GRANT_READ_URI_PERMISSION
StartActivity(docIntent)