当前位置: 代码网 > it编程>App开发>Android > Android中WebView的使用与后退键处理详细讲解

Android中WebView的使用与后退键处理详细讲解

2024年05月15日 Android 我要评论
前言webview是android提供的一个内置浏览器控件,它允许应用在其内显示网页内容或执行javascript脚本。由于webview基于chromium项目,因此它通常拥有和google chr

前言

webview是android提供的一个内置浏览器控件,它允许应用在其内显示网页内容或执行javascript脚本。由于webview基于chromium项目,因此它通常拥有和google chrome浏览器相似的渲染引擎和性能。

webview的使用

  • ✨权限:在使用webview之前,你需要在androidmanifest.xml文件中添加网络权限:

    <uses-permission android:name="android.permission.internet" />
    
  • ✨布局文件中的webview:你需要在布局文件中加入webview组件:

    <webview
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    
  • ✨代码中初始化webview:在activity或fragment的oncreate方法中通过id获得webview实例,并通过loadurl加载一个网页:

    webview mywebview = (webview) findviewbyid(r.id.webview);
    mywebview.loadurl("http://www.example.com");
    
  • ✨webviewclient和webchromeclient

    • 💅webviewclient:可以处理各种通知和请求事件,如页面加载开始和结束。
    • 💅webchromeclient:可以处理javascript对话框、图标、标题和加载进度。
    mywebview.setwebviewclient(new webviewclient());
    mywebview.setwebchromeclient(new webchromeclient());
    
  • ✨启用javascript:很多网页需要javascript支持,可以在webview的设置中启用:

    websettings websettings = mywebview.getsettings();
    websettings.setjavascriptenabled(true);
    
  • ✨处理特定链接的点击:你可以拦截并处理点击链接的逻辑:

    mywebview.setwebviewclient(new webviewclient() {
        @override
        public boolean shouldoverrideurlloading(webview view, webresourcerequest request) {
            // 在这里处理点击链接后的逻辑
            return false; // 返回false意味着webview会处理链接,如果返回true则不处理
        }
    });
    

webview中的后退键处理

要处理android设备的后退键以便用户可以后退到之前的网页,你需要重写activity的onbackpressed方法:

@override
public void onbackpressed() {
    if (mywebview != null && mywebview.cangoback()) {
        mywebview.goback(); // 如果webview可以后退,则后退webview
    } else {
        super.onbackpressed(); // 如果webview不能后退,则执行默认的后退键逻辑
    }
}

这样,当用户按下后退键时,如果webview可以后退到上一个页面,就会执行后退操作;如果不能后退,就会执行activity的默认后退行为,比如结束当前activity。

请根据你实际的开发环境和需求,对这些示例代码进行相应的调整。

附:webview与javascript相互调用问题

如果是debug没有配置混淆时,调用时没问题的,但是当设置混淆后发现无法正常调用了。

解决方案:

在proguard-rules.pro中添加混淆。

-keepattributes *annotation*  
-keepattributes *javascriptinterface*
-keep public class xx.xxx.showlogjavascriptinterface{
   public <methods>;
}

其中xx.xxx..showlogjavascriptinterface 是不需要混淆的类

总结

到此这篇关于android中webview的使用与后退键处理的文章就介绍到这了,更多相关webview使用与后退键处理内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com