我的问题是,如果网站上有一个按钮,那么当用户单击它时它将显示在某个页面上。我想在显示信息时启用功能。请帮助我。
私有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
答案 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开发者指南。