这是细菌感染是怎么引起的还是病毒感染?

Android中调用js方法及js中调用本地方法
我的图书馆
Android中调用js方法及js中调用本地方法
Android中调用js方法及js中调用本地方法,有需要的朋友可以参考下。
Android中内置了WebKit模块,而该模块的Java层视图类就是WebView,所有需要使用Web浏览器功能的Android都需要创建该视图类对象显示和处理请求的网络资源。目前WebKit支持Http、Https、Ftp和JavaScript请求。下面我们重点看一下如何在Android中调用JavaScript方法以及如何在js中调用本地方法。
1、在Assets下放一个简单的html文件jstest.html
&!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html40/strict.dtd"&
&meta name="viewport" content="width=device-width, target-densitydpi=device-dpi" /&
&META http-equiv="Content-Type" content="text/ charset=UTF-8"&
function showMsg(){
alert("hello world!");
function showMsgInAndroid(){
myjs.showMsg('hello in android!');
&span&测试js使用&/span&
&button id='btntest' onclick='showMsgInAndroid()'&调用android方法&/button&
2、布局文件main.xml
&?xml version="1.0" encoding="utf-8"?&
&RelativeLayout
android:id="@+id/rl_main"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="/apk/res/android"
android:id="@+id/wv_test"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/btn_showmsg"/&
android:id="@+id/btn_showmsg"
android:layout_width="200dip"
android:layout_height="40dip"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="调用html中js方法"/&
&/RelativeLayout&
3、然后是Activity,MainActivity.java
package com.harold.
import com.harold.base.JSK
import android.app.A
import android.os.B
import android.os.H
import android.view.V
import android.view.View.OnClickL
import android.webkit.WebChromeC
import android.webkit.WebV
import android.widget.B
public class MainActivity extends Activity {
private WebView mWebV
private Button btnShowI
private JSK
private Handler mHandler = new Handler();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//初始化控件
mWebView = (WebView) findViewById(R.id.wv_test);
btnShowInfo = (Button) findViewById(R.id.btn_showmsg);
//实例化js对象
js = new JSKit(this);
//设置参数
mWebView.getSettings().setBuiltInZoomControls(true);
//内容的渲染需要webviewChromClient去实现,设置webviewChromClient基类,解决js中alert不弹出的问题和其他内容渲染问题
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.getSettings().setJavaScriptEnabled(true);
//把js绑定到全局的myjs上,myjs的作用域是全局的,初始化后可随处使用
mWebView.addJavascriptInterface(js, "myjs");
mWebView.loadUrl("file:///android_asset/jstest.html");
btnShowInfo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mHandler.post(new Runnable() {
public void run() {
//调用 HTML 中的javaScript 函数
mWebView.loadUrl("javascript:showMsg()");
4、最后是绑定全局js的类JSKit.java
package com.harold.
import android.widget.T
import com.harold.jstest.MainA
public class JSKit {
private MainA
public JSKit(MainActivity context) {
public void showMsg(String msg) {
Toast.makeText(ma, msg, Toast.LENGTH_SHORT).show();
例子比较简单,代码里都加了注释,这里就不多说了,本示例用的本地的html,如果访问网络中的网页,别忘记在AndroidManifest.xml中加权限
&uses-permission android:name="android.permission.INTERNET"/&源码在下面:
TA的最新馆藏求助,从android4.1升级到4.4后,webview无法与javascript通信
如题!原来在4.1上调试好的代码,在4.4上无法运行了!
java代码片段:webview.addjavascriptinterface(this,"app");
javascript片段:for(var obj in window)document.write(obj+"&br&");
结果能显示出app,然而调用app里的自定义函数时显示函数不存在!
Android4.2 以前WebView 提供了javascript 调用Java代码的方法,会造成很大的安全漏洞。Android官方在API17后,限制javascript代码只能调用声明了@JavascriptInterface 注解的Java方法。
所以你必须要给每个可供js代码调用的Java方法加一个@JavascriptInterface接口。
有没有人啊?
4.4 出了新的java调用js 函数
竟然没提示不能用老的,渣渣开发包
去年就遇到过的问题.
把4.4里的@JavascriptInterface代码拷出来,放到自己的Project里,就可以了.
被调用的java方法上面要加注解&
@JavascriptInterface
谢谢各位!android开发(36)
前几天项目中遇到了整个问题,在android2.2上跑,ok,木有问题。拿到4.4上测试,在webview中没有反应。
这是因为在android4.2.X之后google公司对webview进行了一次漏洞修补。只允许js调用java中用@JavascriptInterface注解了的方法。看网上的解决方法,发现说的不甚明了,这里我还是把这个解决终极总结给写出来吧,后来人少走弯路吧。
相信猿友们已经搜索过了很多这方面的解决办法:
正如上所说,需要在你js调用的方法前加上@JavascriptInterface 的注解。但是有部分人的代码会报错说找不到类,需要创建类。然后大概会像我一样去搜这个注解的类支持库。呵呵呵。。。开始走弯路了。
其实在android4.2中已然有了这个类。我们只需要将properties中的编译sdk换成4.2的17即可。如果你电脑上没有装17的sdk,恩,这个问题么。自己解决!
貌似没有代码就没有说服力哇,象征性加入一段代码(然并卵):
class Ccl{
@SuppressLint(&JavascriptInterface&)
public Ccl(Context context){
this.context =
@JavascriptInterface
public void showMap(String jingdu,String weidu){
judgeInstall(jingdu,weidu);
javascript:ccl.showMap('\&+jingdu+\&','\&+weidu+\&');\&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:15760次
排名:千里之外
原创:22篇
转载:16篇
(1)(1)(1)(1)(2)(1)(1)(1)(2)(1)(2)(8)(9)(4)(1)(2)(1)}

我要回帖

更多关于 细菌感染还是病毒感染 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信