Можно ли WebView OnCreateWindow сделать всплывающим окном (стиль диалога)? как Android-браузер

1

Когда я нажимаю кнопку с этим кодом на ebay.com в своем веб-просмотре:

html кнопки:

input id="addPicturesBtn" name="addPicturesBtn" type="button" value="Add pictures" class="button" onclick="ebay.run(this.id,'onclick');return false;" onkeydown="ebay.run(this.id,'onkeydown');return false;" title="Add pictures"

Если эта кнопка нажата внутри моего веб-браузера, она отправляет новое окно из моего веб-браузера в браузер Android. Но если одна и та же кнопка нажата из браузера android, всплывает всплывающее окно этого прохладного диалогового окна (см. Рисунок).

Я хотел бы открыть всплывающее окно стиля на eBay, как это делает браузер, если эта кнопка нажата внутри моего веб-браузера. Чтобы пользователь мог закрывать его, чтобы вернуть их в мое приложение за ним, когда они сделаны со всплывающим окном.

Возможно ли это?

Вот что я до сих пор:

   webChromeClient = new WebChromeClient() {
    @Override
    public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
        WebView childView = new WebView(Ebay.this);
        final WebSettings settings = childView.getSettings();
        settings.setJavaScriptEnabled(true);
        childView.setWebChromeClient(this);
        childView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
        transport.setWebView(childView);
        resultMsg.sendToTarget();

    return true;
    }
        @Override
        public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
            new AlertDialog.Builder(view.getContext()).setMessage(message).setCancelable(true).show();
            result.confirm();
            return true;

       }

Я что-то пропустил?

Вот изображение всплывающего окна браузера Android (что я пытаюсь запустить мой веб-просмотр с кнопки на ebay.com):

Изображение 174551

  • 0
    как далеко вы продвинулись с вашим собственным подходом? Я сейчас пробую то же самое. Ваши текущие ответы имхо немного за рамками, потому что они предполагают, что это ваш собственный веб-сайт (а не eBay).
Теги:
popup

2 ответа

2

Вы можете сделать это по-своему:

public void onCreate(Bundle savedInstanceState){
  ....
  webView.getSettings().setJavaScriptEnabled(true);
  webView.addJavascriptInterface(new MyJSInterface(), "myappname");
  webView.loadUrl("http://mysite.com/"); // or some local asset
  ....
}

public class MyJSInterface{

....
 public void popup(){

//  AlterDialog etc.

 }
....

}


HTML from your website:

window.onload = function(){
   window.myappname.popup();
}

Я бы хотел, чтобы это было полезно для вас...

Кстати, будьте осторожны с версией 2.3, у нее была соответствующая ошибка только FYI))
2

Использовать интерфейс javascript. Объедините javascript с java и создайте пользовательский диалог в java Сначала включите javascript

webview.getSettings().setJavaScriptEnabled(true);

Во-вторых, вам нужно добавить интерфейс javascript

wv.addJavascriptInterface(new DemoJavaScriptInterface(), "js");

И в-третьих, load url;

webview.loadUrl("javascript:[javascript function name here]()");

Вот вам какой-то код, надеюсь, это поможет https://github.com/scottagarman/Android-JavaScript-Interface-Example

Кредит кода передается разработчику под названием "scottagarman".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню