Android中的JS交互小结
来源:互联网 发布:windows下安装sublime 编辑:程序博客网 时间:2024/05/04 14:29
在平时开发中很多情况下需要涉及到使用WebView加载一个网页,这时候就需要跟网页里面的按钮或者输入框等进行数据或行为进行交互。
首先解决一个问题:在跟输入框交互有的时候弹不出输入法的时候解决办法,我们只要给WebView外层添加一个LinearLayout嵌套,如下:
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:id="@+id/webview_id" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
当我们跟网页中的按钮交互的时候我们需要先给WebView设置几个东西:
WebSettings settings = mWebView.getSettings();settings.setJavaScriptEnabled(true);mWebView.setWebViewClient(new WebViewClient() {
…
});mWebView.setWebChromeClient(new WebChromeClient() {
…
});
这样简单设置之后,使得WebView能够支持JS交互功能,然后我们给WebView设置addJavascriptInterface交互回调:
mWebView.addJavascriptInterface(new LiveJsInterface() {@JavascriptInterface
public void clickOnAndroid(int type) {
}}, “android”);
最后只要网页前端人员onclick=”window.android.clickOnAndroid()”添加类似的方法即可。
注意点:
1.clickOnAndroid函数名字要跟网页前端中保持一致,且android这个字符串也要保持一致才行,当然函数中的参数int type就是从网页前端返回回来的数据,你也可以返回一些自定义的字符串。
2.@JavascriptInterface这个标签在SDK版本为4.2的时候必须要加上去否则无法交互成功。
做完从网页中得到Js的数据,那我们如何传参数给网页呢:
mWebView.loadUrl("javascript:getData()");
我们只要loadUrl网页中相对应的JS函数就好,如果函数中需要带参数可自行拼接上去就好。
最后在混淆的时候我们需要这么做:
-keepclassmembers class com.test.demo.MainActivity$TestJsInterface{ public *;}
即保证不混淆具体界面下的JS交互类就好。
现在的应用或多或少总会接触到跟网页交互的界面,所以很有必要总结一些WebView跟Js的交互!!
1 0
- Android中的JS交互小结
- android WebView与JS交互小结
- android中的WebView与JS交互
- android中的与js交互方式
- js与Android交互之js调用Android中的方法
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件 .
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- Bouguet极线校正的方法
- Python操作Redis之订阅与发布
- 类的非静态成员函数指针详解
- FT232R假芯片之后我们怎么办
- 阿里云CTO章文嵩:GPU高性能计算是下一个风口
- Android中的JS交互小结
- eclipse使用
- 六款不容错过的开源持续集成工具
- [iOS学习]C语言:乘法表效果使用for循环输出
- Android资源管理框架(Asset Manager)简要介绍和学习计划
- 枚举法计算全年周内星期几的次数
- 在64位机子调用vs编写的win32 c++程序遇到问题
- Java Socket 编程之Socket与ServerSocket的区别
- file Iteration to file tree