【ANDROID】使用webview实现加载第三方的网页效果

最新版本的android sdk怎么显示webview的内容,好多资料都是老版本的了,记录下新sdk的写法

实现效果

MainActivity文件代码

java 复制代码
public class MainActivity5 extends AppCompatActivity {
    private WebView webView;
    private long exitTime = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = new WebView(this);
        webView.setWebViewClient(
                new WebViewClient() {
                    @Override
                    public boolean shouldOverrideUrlLoading(WebView view, android.webkit.WebResourceRequest request) {
                        view.loadUrl(request.getUrl().toString());
                        return true;
                    }
                }
        );
        // 设置 WebView 基本配置
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        // 添加混合内容支持
        webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        // 允许访问文件
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setAllowContentAccess(true);

        webView.loadUrl("http://m.baidu.com/");          //调用loadUrl方法为WebView加入链接
        setContentView(webView);                           //调用Activity提供的setContentView将webView显示出来
    }

    @SuppressLint("GestureBackNavigation")
    @Override
    public void onBackPressed() {
        if (webView.canGoBack()) {
            webView.goBack();
        } else {
            // 使用现代的处理方式,避免时间戳比较
            if (exitTime + 2000 > System.currentTimeMillis()) {
                super.onBackPressed();
                return;
            }
            exitTime = System.currentTimeMillis();
            Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
        }
    }

}

活动文件中添加了很多getSettings(),但是还是加载不了,显示报错

修复报错bug

在res/xml里面新增network_security_config.xml

xml 复制代码
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">m.baidu.com</domain>
        <domain includeSubdomains="true">www.baidu.com</domain>
    </domain-config>
</network-security-config>

-AndroidManifest.xml文件里面再增加配置

在application上面加上

xml 复制代码
android:networkSecurityConfig="@xml/network_security_config"

这样webview就能显示要展示的网页了

相关推荐
_祝你今天愉快4 小时前
从驱动来分析服务的添加过程
android
Dovis(誓平步青云)7 小时前
折叠屏悬停看视频,上半屏和下半屏应该各做什么
android·java·服务器·开发语言·安全·音视频
alexhilton8 小时前
让架构边界变成可执行的测试
android·kotlin·android jetpack
hai_android9 小时前
SendChannel 与 ReceiveChannel 通信机制
android
数据治理自习室11 小时前
AI 应用评测体系(GraphRAG)
android·大数据·人工智能·kotlin
爱笑鱼12 小时前
Android 系统启动机制(五):system_server 是 init 启动的,还是 Zygote fork 出来的?
android
智购科技无人售货机工厂12 小时前
2026自动售货机防拆机物理安全设计:从安全螺丝到结构互锁的工程实践~YH
android·网络·驱动开发·python·单片机·安全·云原生
开开心心就好13 小时前
电子教鞭工具支持画框写字插图片功能齐全
android·开发语言·前端·javascript·人工智能·pdf·html
Dovis(誓平步青云)13 小时前
拍视频前先把镜头想清楚:做一个分镜取景辅助器
android·java·服务器·javascript·人工智能
峥嵘life14 小时前
Android16 系统 APEX 模块说明
android·大数据·开发语言