Android Question ESP8266 - ESP32 OTA Update from B4A WebView [SOLVED]


Well-Known Member
Licensed User
Longtime User
Hi all,

for my 3D Printing Host app I need to do ESP8266-ESP32 OTA updates directly inside the app instead of use external browser.

I never used WebView for my projects before now, so I have some problems to know how to do it.

With current code I wrote I'm able to see on the WebView the ESP OTA update page, but when I press the button to choose a binary file (.bin)
the WebView show a message that says there in no application to do it.

This is the code I wrote, next I will put my questions:
B4A Code:
WebView1.JavaScriptEnabled = True  ' Already enabled by default
'WebView1.ZoomEnabled = False
WebView1.Color = Colors.LightGray
Dim wve As WebViewExtras
wve.addWebChromeClient(WebView1, "wve")
wve.addJavascriptInterface(WebView1, "b4a") ' Is this required ???

Dim WebViewSettings1 As WebViewSettings
Log("UserAgent before: " & WebViewSettings1.getUserAgentString(WebView1))

Dim UserAgent As String = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv: Gecko/20100101 Firefox/4.0"
WebViewSettings1.setUserAgentString (WebView1, UserAgent)
'WebViewSettings1.setDefaultZoom(WebView1, "FAR")
'WebViewSettings1.setUseWideViewPort(WebView1, True)
'WebViewSettings1.setLoadWithOverviewMode(WebView1, True)
Log("Save passwords: " & WebViewSettings1.getSavePassword(WebView1))
Log("UserAgent after: " & WebViewSettings1.getUserAgentString(WebView1))


Sub btnStart_On(Index As Int, Tag As String)
    Dim URL As String = txtHost.Text.Trim
    Log("Loading URL: " &  WebView1.Url)
    ToastMessageShow("Loading URL: " & WebView1.Url, False)
    WriteSlotVal(79, URL)
End Sub

Sub btnStop_On(Index As Int, Tag As String)
    btnStart.Enabled = True
    btnStart.Value = 0
    btnStop.Value = 0
End Sub

Sub WebView1_UserAndPasswordRequired (Host As String, Realm As String) As String()
    ToastMessageShow(Host & " require Username and Password to access: " & Realm, True)
    Log(Host & " require Username and Password to access: " & Realm)
    Return Array As String("admin", "password") ' OTA update page, we set on ESP to require a login
End Sub

Sub WebView1_OverrideUrl (Url As String) 'As Boolean
    ToastMessageShow("Override URL: " &  Url, False)
    Log("Override URL: " &  Url)
End Sub

Sub WebView1_PageFinished (Url As String)
    ToastMessageShow("PageFinished: " &  Url, False)
    Log("PageFinished: " & Url)
End Sub

My questions are:

1) I've used UserAndPasswordRequired sub to pass the username and password, after I added this It successfull login and I see the OTA update page, but want I want is to show the original login (as showed on browser) so the user insert username and password itself directly on the login view, is that possible?

2) When I load a page, pressing on button to choose a binary file, a message show that there are no applications to do it, I do not khow how I can handle it... Maybe need an Intent or I'm wrong ?

Attached some images of attemp on the app and the original login from Android FireFox browser.

Many thanks for any clarification.


  • Page_loaded.jpg
    99.6 KB · Views: 250
  • No_app_found.jpg
    69.3 KB · Views: 250
  • Firefox_login.jpg
    97.4 KB · Views: 279


Well-Known Member
Licensed User
Longtime User
The problem is in old version of B4A and old SDK package. This library is related on CustomView class. This Logs show me that Custom View properties from designer could not be loaded. So, the main problem in your case is very old IDE and very old SDK package. When you decide to go to latest, all logs will dissapear.
You are right,

my Designer do not see your Custom View, to add it in my app I had to copy/paste between project designers. This way worked.

This is a bit strange even if my IDE is pretty old, in the menù I've an option to add new simple class but even custom views, maybe (sure) because
the IDE is pretty old, something has changed in custom view classes too.
Last edited:
Upvote 0


Well-Known Member
Licensed User
Longtime User
Hi @DonManfred,

no, I do dot use the newest IDE release, I use the 7.80 release because it is the last working on 32bit systems.

I've a pretty old setup and use Win XP 32bit on a pretty old singlecore pc 2.1Ghz with 2GB of ram, I had no particular problems, all worked and works well, apart the fact that I have not new IDE funtionalities.

For now I have no possibility to change my system, so just need to survive with this release, next when possible I will change my setup and use the latest IDE for sure.

Many thanks for your interest
Last edited:
Upvote 0