5
votes

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.

2
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.Ondrej Kelle
@TOndrej That is maybe the intention from emba, but not the intention from the cloud identification point of viewSir Rufo
@SirRufo Sorry, I don't understand your comment.Ondrej Kelle
Another win for native development toolingDavid Heffernan
@TOndrej The intention for cloud identification is to identify yourself to any service without letting this service know your login data.Sir Rufo

2 Answers

-1
votes

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.

-2
votes

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;