Android WebView下载然后在AlertDialog中显示

时间:2018-01-09 09:31:33

标签: javascript android webview

我目前正在尝试在小弹出窗口中显示webview。但我想首先加载视图,然后在适当的时候显示它。

所以我试图做的是2个功能:

Special

至于WAIAndroid调整大小:

public void fetchPopUp(String url, Context appContext)
{
    webView = new WebView(appContext);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl(url);
}

public void displayPopUp(Activity activity)
{
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        builder = new AlertDialog.Builder(activity, android.R.style.Theme_Material_Dialog_Alert);
    } else {
            builder = new AlertDialog.Builder(activity);
    }

    builder.setView(webView);
    AlertDialog dial = builder.show();
    webView.addJavascriptInterface(new TCWebAppInterface(dial, webView, activity), "WAIAndroid");
    webView.loadUrl("javascript:WAIAndroid.resize(document.body.getBoundingClientRect().height)");
    }

奇怪的事情是当我一个接一个地调用fetchPopup和displayPopup时,它工作得很好(除了大小问题,这是调整大小的点)。

但是当我单独调用它们时,弹出窗口显示为空,并且不调用resize方法。

我试图显示每个对象,webview仍然是好的,我尝试显示它完成加载,它被正确调用,我尝试重新加载,试图使其不可见或者再次可见,尝试重新加载javascript。没有什么能改变这样一个事实:当我在@JavascriptInterface public void resize(final float height) { activity.runOnUiThread(new Runnable() { @Override public void run() { Log.e("JIBA", "sizes\n" + activity.getResources().getDisplayMetrics().widthPixels + "\n" + height + "\n" + activity.getResources().getDisplayMetrics().density + "\n" + activity.getResources().getDisplayMetrics().heightPixels); }); } 方法之后稍晚调用displayPop时,它不起作用。我猜想在加载url并调用“fetchPopup”后会出现问题。但是我找不到如何解决这个问题。

任何帮助都会非常感激,我的想法已经用完了!

非常感谢!

1 个答案:

答案 0 :(得分:1)

尝试移动您的代码:

webView.addJavascriptInterface(new TCWebAppInterface(dial, webView, activity), "WAIAndroid");
在loadUrl之前

到你的fetchPopUp函数,如下所示:

public void fetchPopUp(String url, Context appContext){
    webView = new WebView(appContext);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.addJavascriptInterface(new TCWebAppInterface(dial, webView, activity), "WAIAndroid");
    webView.loadUrl(url);
}