要想让加载的H5页面中的alert显示出来需要在Android端设置:
完整代码如下:
package com.example.yunlanlink;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class DeviceInfo extends AppCompatActivity {
WebView webView;
Context ctx = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_device_info);
ActionBar actionBar = getSupportActionBar();
if(actionBar != null){
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setTitle("设备详情");
}
initWebView();
}
@Override
protected void onDestroy() {
//释放资源
if (webView != null)
webView.destroy();
super.onDestroy();
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
Log.d(AppYunlanLink.TAG, "onOptionsItemSelected: " + item.getItemId());
Log.d(AppYunlanLink.TAG, "onOptionsItemSelected home id " + android.R.id.home);
switch (item.getItemId()){
case android.R.id.home:
this.finish();
// onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void initWebView() {
webView = new WebView(this);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setBuiltInZoomControls(false);//webview 禁止手势缩放
settings.setSupportZoom(false);
settings.setDisplayZoomControls(false);
settings.setDomStorageEnabled(true); // 开启 DOM storage 功能
settings.setAllowUniversalAccessFromFileURLs(true); // 设置是否允许通过 file url 加载的 Javascript 可以访问其他的源(包括http、https等源)
settings.setAllowFileAccess(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setDefaultTextEncodingName("UTF-8");
settings.setJavaScriptCanOpenWindowsAutomatically(true);
//响应webview 加载H5页面中的alert函数,否则alert显示不出来
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
AlertDialog.Builder b = new AlertDialog.Builder(ctx);
b.setTitle("title");
b.setMessage(message);
b.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
});
b.create().show();
return true;
}
});
String _url = "file:android_asset/dist/index.html#/device/index";
webView.loadUrl(_url);
setContentView(webView); //调用Activity提供的setContentView将webView显示出来
}
}
原文地址:https://blog.csdn.net/liubangbo/article/details/127091496
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_10117.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。