Android下的WebView与JS交互
来源:互联网 发布:医疗器械人工智能协会 编辑:程序博客网 时间:2024/06/02 13:20
我想把自己一点相关的经验分享出来,尽量写的清晰点吧,其实逻辑不难,如果大家有更好的方法,请多教.
需求是这样:
使用webview加载一个html页面,填入信息之后,点击确认按钮,要获取JS的返回的一个id值,然后通过这个值去访问接口,再获取微信支付所必须的参数来调起微信支付,之前并没有涉及到webview与JS交互,网上关于这方面的资料并不多,零零碎碎收集了一些信息,一整和,总算是有点头绪.
我把关键代码贴上
``` private String sentence = "javascript:window.recharge.show(document.getElementById('标签的ID').value);";//这是JS语句 @Override protected void initView() { setContentView(R.layout.recharge); ButterKnife.bind(this); api = WXAPIFactory.createWXAPI(this, Constants.WX_APP_ID); api.registerApp(Constants.WX_APP_ID);}
private String url;@Overridepublic void initData() { super.initData(); Intent intent = getIntent(); url= intent.getStringExtra("URL");//这里获取的是html地址 initWebView();//对webview进行初始化}
private void initWebView() { mWebView.loadUrl(url);//这里是加载页面 mWebView.getSettings().setJavaScriptEnabled(true);//设置webview支持Javascript mWebView.addJavascriptInterface(new Recharge(), "recharge");//将一个java对象绑定到一个javascript对象中,就是暴露一个对象让js调用,看看上面的JS语句,就明白这两个参数的意思了 mWebView.setWebChromeClient(new WebChromeClient()); mWebView.setWebViewClient(new MyWebViewClient());//处理事件 }
class Recharge{//这是内部类 @JavascriptInterface public void show(String data) {//提供给JS调用的方法,这个参数就是我们要得到的 postWXRequest(data);//拿这个参数去请求微信支付所需数据 } } private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) {//这个方法是检测到页面刷新就执行,因为用户点击确认按钮之后,页面就会刷新,所以我在这里 自己调用JS的函数来获取返回值 view.loadUrl(sentence);//这是执行JS语句,获取参数并调用show()方法; return true; } } }
0 0
- Android下的WebView与JS交互
- Android WebView 与JS的数据交互
- Android WebView 与JS的数据交互
- Android 的webview与js交互
- Android WebView 与JS的数据交互
- Android WebView 与JS的数据交互
- Android WebView与JS的交互
- Android中WebView与JS的交互
- Android WebView 与JS的数据交互
- Android WebView 与JS的数据交互
- Android中webView与JS的交互
- android WebView与JS的交互
- Android WebView 与JS的数据交互
- [Android]WebView与Js交互的学习
- Android WebView与JS的数据交互
- Android WebView 与JS的数据交互
- Android WebView与JS的交互
- Android中WebView与JS的交互
- [C语言]模拟实现strcpy/strncpy/strcat/strncat/strcmp/strncmp/strstr
- ScrollView知识点
- 项目研发管理经验总结
- 维棠flv视频下载软件 v2.0.9.4官方免费版
- iptable记录
- Android下的WebView与JS交互
- 串口FIFO中断
- Last_Errno: 1033
- bolierplate记录
- Java基本数据类型
- Maven 手动添加 JAR 包到本地仓库
- PHP模拟http请求
- 通读cheerio API
- Spark RDD、DataFrame和DataSet的区别