Firemonkey TWebBrowser input alternative?
Asked Answered
R

2

6

As Embarcadero said :

"WebBrowser Does Not Accept Keyboard Input on Android

On Android devices, the on-screen keyboard is not available in a TWebBrowser control. This means that a user cannot complete a web form, for example. The TWebBrowser control should be used for displaying information or documents. User interaction should be performed with FireMonkey controls."

Link

This is very annoying if we have to use Clouds identification pages like Dropbox or Google Drive.

Using Delphi XE5 with REST components, I'm able to open the login pages, but the keyboard is not functional on Android.

So how can I use FireMonkey controls to perform interactions as Embarcadero said : User interaction should be performed with FireMonkey controls. ?

EDIT :

Delphi XE 6 seems to be the only nice solution :

Updates to TWebBrowser : The web browser available on Windows (SHDocVw.TWebBrowser) has been updated to the latest version of Internet Explorer.

Richmound answered 3/1, 2014 at 7:41 Comment(14)
They probably mean that you can create your own (FireMonkey) form to collect user input, and create and send an appropriate HTTP POST request in code. Then you can display the response in the browser.Lubin
@TOndrej That is maybe the intention from emba, but not the intention from the cloud identification point of viewLegalize
@SirRufo Sorry, I don't understand your comment.Lubin
Another win for native development toolingDisintegrate
@TOndrej The intention for cloud identification is to identify yourself to any service without letting this service know your login data.Legalize
I looked for a solution to send user input from TEdit, but I don't know how to send HTTP POST with Firemonkey. Ok for another win, but I still need a TWebrowser...Richmound
@SirRufo Sorry, I don't understand how your comment is related. The problem here is that TWebBrowser doesn't accept user input so the workaround is to create an alternative UI to accept user input.Lubin
@TOndrej so users should type their Facebook or Google credentials into an untrusted app?Tegucigalpa
@Tegucigalpa this approach to security is rather crude.Lulita
@Tegucigalpa Do they type their Facebook or Google credentials into the browser? In case they do, what makes the browser more trusted than your app? Otherwise, how is your app different from the browser if it performs exactly the same authentication procedure?Lubin
@tondrey for example the browser may be part of OS. Or just be trusted by user. It is perfectly normal if someone would trust you but not me. The question is rather how user can tell that the app does not fake browser-like popular formArraign
@Richmound regarding XE6 ... has been updated to the latest version of Internet Explorer: nice, but how exactly does this help on the Android platform? :)Tegucigalpa
@Tegucigalpa : Virtual keyboard is now shown within your Android app. Using XE5, only iOS was able to show it.Richmound
You'll get the problem with hardware keys in exchange to the problem with onscreen keyboard inside a TWebBrowser.Agalloch
H
-1

The trick is give the focus to the WebBrowser component:

procedure TFormBrowserAdd.ButtonNavigateClick(Sender: TObject);
begin
  WebBrowser.CanFocus := True;
  WebBrowser.Navigate(EditUrl.Text);
  WebBrowser.SetFocus;
end;

But, after that the back key will not work correctly so you have to manage in other way. For example i have used a button on my form.

Harvey answered 4/1, 2014 at 13:18 Comment(1)
Thanks for reply Tolentino. But TWebBrowser already has focus on an input (e-mail or password) when the cloud identification page is loaded. How can I send text from a button to the TWebBrowser input ?Richmound
E
-2

you have to set foucs on web browser on end of loading page

procedure TfrmMain.BrowserDidFinishLoad(ASender: TObject);
begin
Browser.CanFocus := True;
Browser.SetFocus;
end;

Effulgence answered 25/1, 2014 at 12:18 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.