WebView简单使用(一)

本文介绍了Android中WebView的基本使用,包括在XML布局中添加WebView、设置JavaScript支持、处理返回键以及加载本地H5页面。同时,讨论了WebView与JavaScript交互的实现,强调了设置JavaScriptEnabled的重要性以及如何设置全局变量。还提醒了在使用WebViewClient时需要注意的下载事件处理问题,以免影响网页内按钮事件的响应。

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

  近期在项目中遇到关于WebView与javascript的交互不能下载apk问题,顺便复习相关的知识。

  1 基本使用

     在xml中直接添加控件

<WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"></WebView>

 

   在项目中直接new,在性能方面大多数人使用这个

   

WebView webview = new WebView(this);

对webview进行基本的设置,这样webview就可以加载javascript的页面了。

webView = (WebView) findViewById(R.id.webView);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(https://www.baidu.com);

还需要加载权限

<uses-permission android:name="android.permission.INTERNET"/>

 

但是这样的加载方式在项目中是无法使用的,只不过是具备了浏览器的功能,但是要想向浏览器那样使用还需要就行一些必要的设置

重写onkeydown方法,使app具有返回的功能

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        if (webView.canGoBack()) {
            // 返回上一页面
            webView.goBack();
            return true;
        } else { // 退出程序
            finish();
        }
    }
    return super.onKeyDown(keyCode, event);
}

这样就可以在项目中友好的使用webview了。

当然webview也可以加载本地的H5页面,不过需要把这些文件放在assets下面,只需要在loadUrl这里把地址写上。

webView.loadUrl(file:///android_asset/index.html);

这就是webview的基本使用了

附图:

2 与js的交互

 webView.getSettings().setJavaScriptEnabled(true);这条语句是必须的

 在设置全局变量,这样在js中就可以接收到这个全局的变量

webView.addJavascriptInterface(new HTMLObject(this), "HObject");

HTMLObject类中写需要处理的方法,但是必须在类的上面设置

@JavascriptInterface
public void showToast(String msg) {
    Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}

 

这样就可以在类中使用了

3遇到的问题(此为重的)

webView.setWebViewClient(new WebViewClient());

如果在项目中设置了WebViewClient,那么项目中的所有的js事件都将在这个类中进行处理,否则会遇到按钮事件没有响应。

由于项目中加载一个HTML网页,设置了这个方法,但是没有重写下载的方法,导致这个网页的按钮事件不能响应。

还有可以在项目中不设置这个方法,那么webview会自动的调用默认的浏览器进行按钮事件的处理。

 

项目地址:https://github.com/fengjue/TestWebView

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值