有没有办法检测Android webview中当前是否显示弹出窗口?

时间:2014-08-18 21:30:32

标签: android webview

我有一个带有webview的Android应用程序,它会显示一个包含大量控件的表单。点击其中一个控件会导致显示弹出窗口。有没有办法检测网页浏览中当前是否有活动的弹出窗口?

2 个答案:

答案 0 :(得分:0)

我做了两个假设,因为这个问题有些模糊:

  • 案例1:在对话框中显示弹出窗口
  • 案例2:在广告中显示弹出窗口

案例1: 我可以想办法解决这个问题。

通过android文档here,您可以调用isShowing()方法来确定是否显示对话框(弹出窗口),它将返回true。

另一种方式。

通过有限的信息...您是否尝试过设置实现Web界面类并调用一个函数来指示您的对话框是否正在显示?像这样。

public class WebAppInterface {

Context mContext;

    /** Instantiate the interface and set the context */
    WebAppInterface(Context c) {
        mContext = c;
    }

    /** inform user that a dialog is being displayed */
    @JavascriptInterface
    public boolean dialogIsShowing() {
      //  Toast.makeText(mContext, "the dialog is showing!", Toast.LENGTH_SHORT).show();
return true
    }
}

...

//code embeded with html to display your dialog

<script type="text/javascript">
    function showCranialsurgesDialog() {
        Android.dialogIsShowing()
    }
</script>


//handle the result of the dialog showing
if (dialogIsShowing()==true){

//do something
}

对于案例2:在广告中显示弹出窗口
我最好的猜测是使用:       &#39; webViewSettings.setJavaScriptCanOpenWindowsAutomatically(假)&#39;方法。这会阻止窗口自动打开,理论上没有经验可能会阻止您的问题。该文档为 here

如果案例1是你坚持的话,那么这也许会有所帮助。 CLICK ME

希望有所帮助, 强尼2盘子

答案 1 :(得分:0)

您可以在mainActivity上使用事件

public void onWindowFocusChanged (boolean hasFocus) 
{
    WebView view = getCurrentFocus();
    String url = view.getUrl() ;
}

并连续两次检查该网址是否相同