Atitit.android jsbridge v1新特性
Atitit.android jsbridge v1新特性
1. Java代码调用js并传参其实是通过WebView的loadUrl方法去调用的、只是参数url的写法不一样而已1
3. Js调用android java通过jsbridge2
5. WebView Error calling method on NPObject5
只能返回str类型,要死obj类型,就是{}的...js提示是个obj,json2str是个{}...空的对象..
1. Java代码调用js并传参其实是通过WebView的loadUrl方法去调用的、只是参数url的写法不一样而已
// 无参数调用
contentWebView.loadUrl("javascript:javacalljs()");// 传递参数调用
2. 三、JAVA和JS交互注意事项
1、Java 调用 js 里面的函数、效率并不是很高、估计要200ms左右吧、做交互性很强的事情、这种速度很难让人接受、而js去调Java的方法、速度很快、50ms左右、所以尽量用js调用Java方法
2、Java 调用 js 的函数、没有返回值、调用了就控制不到了
3、Js 调用 Java 的方法、返回值如果是字符串、你会发现这个字符串是 native 的、转成 locale 的才能正常使用、使用 toLocaleString() 函数就可以了、不过这个函数的速度并不快、转化的字符串如果很多、将会很耗费时间
4、网页中尽量不要使用jQuery、执行起来需要5-6秒、最好使用原生的js写业务脚本、以提升加载速度、改善用户体验
作者:: ★(attilax)>>> 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
3. Js调用android java通过jsbridge
function btn()
{
try{
var r=jsBridge.invoke("com.example.atiplat_vodcp.browExtObj.retStr","testStr..");
alert("raw r:"+r);
try{
r=JSON.stringify(r);
}catch(e){
alert( "str2json e:"+e);
}
alert("ret from jsbrd:"+r);
}catch(e)
{
alert(e);
}
}
4. JsBridge
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.reflect.InvocationTargetException;
import java.net.URLEncoder;
import java.util.concurrent.Callable;
import org.apache.commons.lang3.reflect.ConstructorUtils;
import org.apache.commons.lang3.reflect.MethodUtils;
import com.attilax.exception.ExUtil;
import com.attilax.ref.refx;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.os.Handler;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.widget.Toast;
public class JsBridge {
public static String getTrace(Throwable t) {
StringWriter stringWriter = new StringWriter();
PrintWriter writer = new PrintWriter(stringWriter);
t.printStackTrace(writer);
StringBuffer buffer = stringWriter.getBuffer();
return buffer.toString();
}
MainActivity mainActivity;
public JsBridge(MainActivity mainActivity2) {
mainActivity = mainActivity2;
}
// sdk17�汾���ϼ���ע�� solu click btn ma fein ..
@JavascriptInterface
public String invoke(final String method, final Object... p1) {
String classname = refx.getClassName(method);
String meth_name = refx.getMethodName(method);
Object o;
boolean flag = true;
String trace = "$def e";
try {
o = ConstructorUtils.invokeConstructor(Class.forName(classname),
null);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
// throw new RuntimeException(e);
flag = false;
trace = ExUtil.getTrace(e);
return trace;
}
if (flag) {
try {
return (String) MethodUtils.invokeMethod(o, meth_name, p1);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
// throw new RuntimeException(e);
trace = ExUtil.getTrace(e);
return trace;
}
}
// Handler handler = new Handler();
// // Callable<V>
// handler.post(new Runnale(){
//
// public void run(){
//
// // 更新UI界面元素代码
//
// }
//
// });
// handler.
return trace;
}
5. WebView Error calling method on NPObject
直接android throw yg ex.走中个兰..不个ex try给挂摇..转换成个str输出出来走ok兰...