Android 加载H5片段

本文介绍了一种将后台提供的HTML片段转换为完整网页的方法,并详细展示了如何利用Android中的WebView来加载这些HTML内容,包括设置WebView的相关配置及重写WebViewClient方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中遇到加载部分网页的需求

在网上搜了下,都说自己需要把片段拼接成完整的网址,就用了下,然后就可以了,把代码贴出来以备下次用

private String getHtmlData(String bodyHTML) { 
String head = "<head>" + "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\"> " + "<style>html{padding:15px;} body{word-wrap:break-word;font-size:13px;padding:0px;margin:0px} p{padding:0px;margin:0px;font-size:13px;color:#222222;line-height:1.3;} img{padding:0px,margin:0px;max-width:100%; width:auto; height:auto;}</style>" + "</head>"; return "<html>" + head + "<body>" + bodyHTML + "</body></html>"; 
}

把后台给的那个片段放到这个方法里面

wv.loadData(getHtmlData(content), "text/html;charset=utf-8", "utf-8");

这段代码是在解析完成之后调用

然后在initview里面找id

WebSettings settings = wv.getSettings(); settings.setJavaScriptEnabled(true); settings.setDomStorageEnabled(true); settings.setUseWideViewPort(true); settings.setLoadWithOverviewMode(true); wv.setWebViewClient(new MyWebViewClient(this)); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING); } else { settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL); }

最后是重写WebViewClient方法

 static class MyWebViewClient extends WebViewClient {
        private Activity activity;
        public MyWebViewClient(Activity activity) {
            this.activity = activity;
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);

        }

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            handler.proceed();
            super.onReceivedSslError(view, handler, error);
        }

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

        }
    }
### H5 SDK在Android中的集成与调用 #### 初始化H5 SDK 为了使应用程序能够利用H5功能,SDK可以在`Activity`的`onCreate`方法中初始化。这种做法确保了当活动启动时,所有的资源已经被加载并准备就绪[^1]。 ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化5+内核 DCloud.getInstance().init(this, null); } ``` #### 添加JavaScript接口 为了让Java代码可以被网页上的JavaScript访问,可以通过`addJavascriptInterface()`函数创建桥梁。这允许Web页面通过特定的对象名称来调用原生的方法[^2]。 ```java WebView webView = findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); // 创建一个用于通信的新类实例,并将其暴露给名为 "android" 的 JavaScript 对象 webView.addJavascriptInterface(new AndroidAndJSInterface(), "android"); ``` #### 导入必要的库文件 对于项目来说,正确配置依赖项至关重要。应将下载好的JAR包放入项目的`libs`目录下(如果不存在该文件夹,则需先建立),并通过IDE的功能选项“Add as Library”,把其作为外部库引入工程环境之中[^3]。 #### 实现交互逻辑 下面是一个简单的例子展示如何定义供前端调用的接口: ```java public class AndroidAndJSInterface { @JavascriptInterface public String getAppVersion() { try { PackageInfo pInfo = MainActivity.this.getPackageManager() .getPackageInfo(MainActivity.this.getPackageName(), 0); return pInfo.versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return ""; } } @JavascriptInterface public void showToast(String message){ Toast.makeText(MainActivity.this,message,Toast.LENGTH_SHORT).show(); } } ``` 上述代码片段展示了两种不同类型的API:一种返回字符串形式的应用程序版本号;另一种接受参数并在界面上显示短暂的消息提示框。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值