android webview 添加内置对象
来源:广州中睿信息技术有限公司官网
发布时间:2014/1/26 14:28:49 编辑:admin 阅读 2946
android webview 添加内置对象

package com.android.EosBrowser;

import android.app.Activity;

import android.graphics.Rect;

import android.graphics.Region;

import android.os.Bundle;

import android.util.Log;

import android.view.KeyEvent;

import android.webkit.*;

public class EosWebActivity extends Activity {

/** Called when the activity is first created. */

private static final String TAG = "WebActivity";

public WebView mWeb = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mWeb = (WebView) findViewById(R.id.webwiew);

//此处需要打开js 开关

mWeb.getSettings().setJavaScriptEnabled(true);

mWeb.setBackgroundColor(0);

///添加java js 内置对象。

mWeb.addJavascriptInterface(new Utility(), "Utility") ;

mWeb.clearCache(true);

mWeb.setInitialScale(100);

mWeb.requestFocus(); 

mWeb.loadUrl("http://172.23.65.145/index.htm");

}

///* js 对象实现。

class Utility {

////@JavascriptInterface 从android 4.2,之后,需要加上,否则js 运行后会找不到方法,

///这个需要注意。

@JavascriptInterface

public void setValue(String a,String b,String c,String d){

Log.d(TAG,"====>a="+a +"b="+b+"c="+c+"d="+d);

}

@JavascriptInterface

public String getValue(){

Log.d(TAG,"====>to get value");

return "eos";

}

}

//*/

}

 

//////////////////////////////////////////////////////////////////////////////////

//index.htm 页面实现。

<html>

<head>

</head>

<body >

hello world

<a id="a1" href="www.google.com" >google</a>

</br>

<script language="javascript">

Utility.setValue("11","22","33","55");

Utility.getValue();

</script>

</body>

</html>

 

////////////////////////////////////////////////////////////

(1), 关于 js 中调用内置对象 需要这样使用

Utility.setValue(); 不能,使用new Utility().setValue();

(2),为安全考虑,(js可以通过,反射机制去访问,修改webview 等)在android 4.2 以后。js 扩展接口需要加上,“@JavascriptInterface” ,

否则会报 Object [object Object] has no method 这个类错误。

联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2