android - 可能 WebView OnCreateWindow 制作弹出窗口(对话框样式)?像安卓浏览器

标签 android popup

当我在 ebay.com 的 web View 中按下带有此代码的按钮时:

按钮的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"

如果在我的 webview 中按下这个按钮,它会将新窗口从我的 webview 发送到 android 浏览器。但是如果从 Android 浏览器中按下相同的按钮,它会弹出这个很酷的对话框类型弹出窗口(见图)

如果在我的 web View 中按下此按钮,我想像浏览器一样在 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 浏览器弹出窗口的图片(我试图让我的 webview 从 ebay.com 上的按钮启动):

popup

最佳答案

使用javascript接口(interface)。将javascript与java结合并在java中制作自定义对话框 首先,启用javascript

webview.getSettings().setJavaScriptEnabled(true);

其次,你需要添加javascript接口(interface)

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

第三,加载url;

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

给你一些代码,希望对你有帮助 https://github.com/scottagarman/Android-JavaScript-Interface-Example

代码归功于名为“scottagarman”的开发人员。

关于android - 可能 WebView OnCreateWindow 制作弹出窗口(对话框样式)?像安卓浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183102/

相关文章:

android - 如何调整我的代码以获取所需的屏幕截图,同时裁剪顶部和底部?

java - 致命异常 : main java. lang.NoClassDefFoundError : com. mtower.adha.ui.MapDetail

android - 我怎样才能在数字时钟中设置时间

JavaScript 将表单数据发布到没有 "target"的新窗口

javascript - Leafletjs 弹出层在页面加载时的位置不正确

php文件中的javascript/css弹出div

iphone - 是否可以从 iOS 向 Android 发送蓝牙数据?

android - Google Play 开发者控制台 : beta test paid apps for free?

javascript - 如何创建悬停弹出窗口

javascript - 当用户将鼠标悬停在某些文本上时,如何打开一个小窗口?