Javascript 锁定对WebView Android的访问

Javascript 锁定对WebView Android的访问,javascript,android,webview,Javascript,Android,Webview,WebView loadUrl运行异步任务以加载给定URL。有一个按钮具有onClick方法和调用loadURL方法。WebView使用JavascriptInterface-特定方法由onload事件()调用。我希望在加载URL之前锁定对对象的访问,并在JavascriptInterface方法中解锁。将loadUrl放入同步块是否足够 编辑: 加载WebView mRenderReceiptWebView = (WebView) findViewById(R.id.recei

WebView loadUrl运行异步任务以加载给定URL。有一个按钮具有onClick方法和调用loadURL方法。WebView使用JavascriptInterface-特定方法由onload事件()调用。我希望在加载URL之前锁定对对象的访问,并在JavascriptInterface方法中解锁。将loadUrl放入同步块是否足够

编辑:

加载WebView

        mRenderReceiptWebView = (WebView) findViewById(R.id.receiptWebView);
        mRenderReceiptWebView.getSettings().setJavaScriptEnabled(true);
        mRenderReceiptWebView.getSettings().setPluginState(PluginState.OFF);
        mRenderReceiptWebView.getSettings().setAllowFileAccess(false);

        mRenderReceiptWebView.setVisibility(View.VISIBLE);
        mRenderReceiptWebView.setWebChromeClient(new WebChromeClient(){

            @Override
            public boolean onConsoleMessage(ConsoleMessage cm) 
            {
                Log.d("ShowMote", cm.message() + " -- From line "
                                     + cm.lineNumber() + " of "
                                     + cm.sourceId() );
                return true;
            }
        });
        mRenderReceiptWebView.setDrawingCacheEnabled(true);
               mRenderReceiptWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
  mRenderReceiptWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
  mRenderReceiptWevView.addJavascriptInterface(new JavaScriptInterface(),
  "Android"); receiptWebView.loadUrl(url);
JavaScriptInterface函数

公共JavaScriptInterface(){

@JavascriptInterface

公共空间 {}

}

html正文加载

<body onload="(function(){ Android.funJS();}());">

您可以使用setWebViewClientProgressDialog来实现这一点。说明及代码:

web.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap bitmap) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, bitmap);
            //start progress dialog here and setCancellable(false) to dialog
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            //dismiss dialog here progressdialog.dismiss()
        }
    });

或者,您可以在onclick方法中启动progressdialog,并在onPageFinished方法中关闭它。

请显示您正在谈论的代码。但是onPageFinished不能确保加载整个网页内容。这就是我使用onload的原因event@dzakens然后,您可以将从getrequest收到的html字符串下载到url,并使用asynctask将该字符串设置为webview。上面的方法是最简单的方法,但是loadUrl调用涉及创建异步任务?@dzakens,正如我前面所说的,下载html并遵循此链接此处没有异步调用,即使有,也会在几毫秒内完成