android和javascript交互问题 5C

NativeApi.getDeviceId("123456",function (deviceid){
document.getElementById("deviceId").innerHTML = deviceid;
},
function (error){
document.getElementById("deviceId").innerHTML = error;
});

像这样js将函数作为参数来实现回调,android这边应该怎么写呢? 回调函数应该怎么办呢?

u014134617
ConfidentMySelf @JavascriptInterface public void getDeviceId() { try{ //Log.e("script", params); TelephonyManager tm = (TelephonyManager) Application.getContext().getSystemService(Context.TELEPHONY_SERVICE); 我的意思是我的安卓里方法应该怎样处理作为参数的js函数
12 个月之前 回复

3个回答

你这种情况应该让js调你android的代码,写个类(名字随便起) 里面加几个方法,用javascriptInterface注解一下,然后通过webview的addJavascriptInterface方法将类的对象映射到js页面,js就可以直接调
用你的方法,顺便把值传过来。

dsxjinzhiqiang
dsxjinzhiqiang 你这思路本来就不对,你那个方法都是匿名方法,webview无法加载,你要么将这些代码封装到一个方法里面,返回结果,让webview调用,要么自己调用android的方法将结果传到android页面。
12 个月之前 回复
u014134617
ConfidentMySelf @JavascriptInterface public void getDeviceId() { try{ //Log.e("script", params); TelephonyManager tm = (TelephonyManager) Application.getContext().getSystemService(Context.TELEPHONY_SERVICE); 我的意思是我的安卓里方法应该怎样处理作为参数的js函数
12 个月之前 回复

webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JSHook(), "hello"); //在JSHook类里实现javascript想调用的方法,并将其实例化传入webview, "hello"这个字串告诉javascript调用哪个实例的方法
public class JSHook{
public void javaMethod(String p){
Log.d(tag , "JSHook.JavaMethod() called! + "+p);
}

    public void showAndroid(){
        String info = "来自手机内的内容!!!";
        webView.loadUrl("javascript:show('"+info+"')");
    }

    public String getInfo(){
        return "获取手机内的信息!!";
    }
}
u014134617
ConfidentMySelf @JavascriptInterface public void getDeviceId() { try{ //Log.e("script", params); TelephonyManager tm = (TelephonyManager) Application.getContext().getSystemService(Context.TELEPHONY_SERVICE); 我的意思是我的安卓里方法应该怎样处理作为参数的js函数
12 个月之前 回复

我们的h5与原生交互使用的是cordova,你可以查查

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!