android webview的使用

本文详细介绍了Android中WebView的应用技巧,包括配置权限、启用JavaScript、处理返回操作、自定义对象支持及下载监听等方面的知识,并提供了常见问题解决方案。
 webview是android中的浏览器控件,在一些手机应用中常会用到b/s模式去开发应用,这时webview的强大功能就会显示出来。

 1、webview的几点设置

 

 权限设置:.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误

 js开放设置: 如果访问的页面中有Javascript,则webview必须设置支持Javascript。webview.getSettings().setJavaScriptEnabled(true);  否则,页面的js将不会起作用.

滚动条设置:this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);

设置缓存模式:setCacheMode

2、事件监听对象(WebViewClient) 

事件监听对象WebViewClient中,主要有如下几个常用方法:

shouldOverrideUrlLoading:在web页面里单击链接的时候,会自动调用android自带的浏览器来打开链接,需要通过该方法在本页面打开;

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

onLoadResource:加载资源时响应

onPageStart:在加载页面时响应

onPageFinish:在加载页面结束时响应

onReceiveError:在加载出错时响应

onReceivedHttpAuthRequest:

3、返回处理

如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。

public boolean onKeyDown(int keyCode, KeyEvent event) {        
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {        
            mWebView.goBack();        
                   return true;        
        }        
        return super.onKeyDown(keyCode, event);        
    } 

4、支持javascripte自定义对象

可以通过addJavascriptInterface()方法,添加js自定义对象,使用web页面与手机java程序能够进行通信交互。

5、DownloadListener接口

该接口里面有一个方法,onDownloadStart()下载侦听接口,如果客户代码实现该接口,则在下载开始、失败、挂起、完成等情况下,DownloadManagerCore对象会调用客户代码中实现的DownloadListener方法。

6、几个注意点

1)为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html" 
2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用 Handler的目的(今天我是在没有在handler中处理,所以导致webviewclient中的onPageStart方法与addJavascriptInterface中的方法起了冲突,二个人的执行顺序时常互换,之后改成handlder实现,就解决其中的问题,正确的顺序是onPageStart在addJavascriptInterface中的handlder事件处理之前执行)。


基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
### Android WebView 使用教程 #### 什么是 WebView? `WebView` 是 Android 提供的一个控件,用于在应用内部加载和展示网页内容。它允许开发者嵌入 HTML 页面到应用程序中,并支持 JavaScript 和 CSS 的执行。 --- #### 基本初始化与配置 要使用 `WebView`,首先需要在布局文件中定义该组件: ```xml <WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` 接着,在 Activity 或 Fragment 中获取并初始化 `WebView` 实例: ```java import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; public class MainActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = findViewById(R.id.webView); // 启用JavaScript支持 WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); // 加载URL webView.loadUrl("https://www.example.com"); } } ``` 上述代码展示了如何启用 JavaScript 支持以及加载指定 URL[^1]。 --- #### 数据提交 (POST 请求) 如果需要通过 POST 方法向服务器发送数据,则可以使用以下方式: ```java String postData = "username=admin&password=secret"; webView.postUrl("https://example.com/login", EncodingUtils.getBytes(postData, "base64")); ``` 注意:这里的数据编码应遵循目标服务端的要求[^2]。 --- #### 处理 Cookies 为了处理 cookies,可以通过 `CookieManager` 设置或读取 cookie: ```java import android.webkit.CookieManager; // 添加Cookie CookieManager.getInstance().setCookie("https://example.com", "name=value"); // 获取所有Cookies String allCookies = CookieManager.getInstance().getCookie("https://example.com"); System.out.println(allCookies); ``` 此部分操作有助于保持用户的登录状态或其他个性化设置。 --- #### 清除缓存与历史记录 当用户退出或者切换账户时,可能需要清理 WebView 缓存及相关信息: ```java // 清楚缓存 webView.clearCache(true); // 删除历史记录 webView.clearHistory(); // 移除基本认证凭证 webView.removeJavascriptInterface("interfaceName"); // 如果存在敏感数据存储需求,可进一步调用清除函数 webView.clearFormData(); ``` 需要注意的是,移除 Java 对象接口可能会因不同版本的 Android 而表现不一致^。 --- #### 高级特性 除了基础功能外,`WebView` 还具备更多高级选项,比如手势识别、离线浏览模式等。这些都可以通过调整其设置来实现[^4]: ```java WebSettings webSettings = webView.getSettings(); webSettings.setDomStorageEnabled(true); // 开启DOM storage API webSettings.setDatabaseEnabled(true); // 允许数据库API webSettings.setAppCacheEnabled(true); // 启动应用缓存 webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // 自适应屏幕宽度 ``` 然而值得注意的一点是,对于 H5 AJAX 请求无法直接拦截修改响应头等内容[^5]。因此某些场景下需借助外部工具完成更复杂的交互逻辑。 --- ### 总结 以上介绍了关于 Android 平台下的 WebView 组件的基础运用技巧及其扩展能力。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值