网站在网络视图中响应或更改其页面时,我们如何运行功能?

时间:2019-06-17 20:31:44

标签: android webview

我的问题是,如果网站上有一个按钮,那么当用户单击它时它将显示在某个页面上。我想在显示信息时启用功能。请帮助我。

私有WebView webView; 私人ProgressBar progressXml; 私有RelativeLayout WaitPageXml; //用户的等待页面 私有RelativeLayout NoInternetPage; //网页没有显示友情链接

受保护的void onCreate(@Nullable Bundle savedInstanceState){         super.onCreate(savedInstanceState);

     setContentView(R.layout.phone_number);

     webView = findViewById(R.id.WebViewXml);
     progressXml = findViewById(R.id.progressXml);
    WaitPageXml = findViewById(R.id.WaitPageXml);


    webView = findViewById(R.id.WebViewXml);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.setInitialScale(15);
    WebSettings mWebSettings = webView.getSettings();
    webView.getSettings().setUseWideViewPort(true);
    WebSettings webSettings = webView.getSettings();
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webView.getSettings().setSupportMultipleWindows(true);
    webView.getSettings().setSupportZoom(true);
    mWebSettings.setAllowFileAccess(true);
    mWebSettings.setAllowFileAccess(true);
    mWebSettings.setAllowContentAccess(true);
    webView.addJavascriptInterface(new MyJavaScriptInterface(),
            "android");

webView.setWebViewClient(new WebViewClient(){

            @Override
            public void onPageStarted(WebView view, String url, Bitmap 
            favicon) {
                if (isOnline()) {
                    progressXml.setVisibility(View.VISIBLE);
                    WaitPageXml.setVisibility(View.VISIBLE);
                    super.onPageStarted(view, url, favicon);

                } else {
                    super.onPageStarted(view, url, favicon);
                    NoInternetPage.setVisibility(View.VISIBLE);
                }


            }

            @Override
            public void onPageFinished(WebView view, String url) {

                progressXml.setVisibility(View.GONE);
                WaitPageXml.setVisibility(View.GONE);
                NoInternetPage.setVisibility(View.GONE);

        });

webView.loadUrl(“ https:// ......”);

@Override
public void onBackPressed() {

    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();

    }

}

public boolean isOnline(){//用于测试连接。         ConnectivityManager cm =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);         @SuppressLint(“ MissingPermission”)NetworkInfo netInfo = cm.getActiveNetworkInfo();         如果(netInfo!= null && netInfo.isConnectedOrConnecting()){             返回true;         }其他{             返回false;         }     }

不幸的是,该网站未执行rosponse

1 个答案:

答案 0 :(得分:0)

我很难准确地回答您的问题,但是根据我的解释,您需要在网页上按一下按钮才能触发某种UI更新(弹出窗口,字段更新等)。有几种不同的方法可以做到这一点,但我不完全确定哪种方法是您要完成的最佳解决方案。

但是,鉴于您已将此问题发布为Android问题,并提供了包含用于设置网络视图的工作的源清单,因此,我假设您正在寻找一种方法来连接从HTML页面按按钮到一些Java回调。如果是这样,您已经在其中了。调用webView.addJavascriptInterface(new MyJavaScriptInterface(), "android");时,这将插入MyJavaScriptInterface的实例作为全局JavaScript变量。

您没有列出MyJavaScriptInterface的实现,因此假设它是一个带有JavascriptInterface批注声明的类,该类将传递给addJavascriptInterface。用JavascriptInterface注释类将其公共方法暴露给JavaScript。假设您有这样声明的类:

@JavascriptInterface
class MyJavaScriptInterface {
    public void doSomething() {
        Log.d("MyJavaScriptInterface", "Got a callback from JavaScript");
    }
}

由于在设置WebView时添加了一个名为“ android”的此类的实例,所以现在可以使用doSomething在JavaScript中调用android.doSomething()函数。例如,假设这是调用webView.loadUrl("https://......");时加载的HTML:

<html>
    <head>
        <script>
            function onButtonPressed() {
                android.doSomething();
            }
        </script>
    </head>
    <body>
        <button onclick="onButtonPressed();">Click me!</button>
    </body>
</html>

在这种情况下,单击页面上的按钮将一直调用Java类中的doSomething。从那里,您可以做任何需要显示的信息。请注意,doSomething不需要为空。如果您需要显示要由JavaScript处理但可以本地检索的信息,它也可以返回数据。

要获取更多帮助,您可以查看关于主题here的Android开发者指南。