GithubHelp home page GithubHelp logo

jsbridge's Introduction

JsBridge


inspired and modified from this and wechat jsBridge file, with some bugs fix and feature enhancement.

This project make a bridge between Java and JavaScript.

It provides safe and convenient way to call Java code from js and call js code from java.

Demo

JsBridge Demo

Usage

JitPack.io

I strongly recommend https://jitpack.io

repositories {
    // ...
    maven { url "https://jitpack.io" }
}

dependencies {
    compile 'com.github.lzyzsd:jsbridge:1.0.4'
}

Use it in Java

add com.github.lzyzsd.jsbridge.BridgeWebView to your layout, it is inherited from WebView.

Register a Java handler function so that js can call

    webView.registerHandler("submitFromWeb", new BridgeHandler() {
        @Override
        public void handler(String data, CallBackFunction function) {
            Log.i(TAG, "handler = submitFromWeb, data from web = " + data);
            function.onCallBack("submitFromWeb exe, response data from Java");
        }
    });

js can call this Java handler method "submitFromWeb" through:

    WebViewJavascriptBridge.callHandler(
        'submitFromWeb'
        , {'param': str1}
        , function(responseData) {
            document.getElementById("show").innerHTML = "send get responseData from java, data = " + responseData
        }
    );

You can set a default handler in Java, so that js can send message to Java without assigned handlerName

    webView.setDefaultHandler(new DefaultHandler());
    window.WebViewJavascriptBridge.doSend(
        data
        , function(responseData) {
            document.getElementById("show").innerHTML = "repsonseData from java, data = " + responseData
        }
    );

Register a JavaScript handler function so that Java can call

    WebViewJavascriptBridge.registerHandler("functionInJs", function(data, responseCallback) {
        document.getElementById("show").innerHTML = ("data from Java: = " + data);
        var responseData = "Javascript Says Right back aka!";
        responseCallback(responseData);
    });

Java can call this js handler function "functionInJs" through:

    webView.callHandler("functionInJs", new Gson().toJson(user), new CallBackFunction() {
        @Override
        public void onCallBack(String data) {

        }
    });

You can also define a default handler use init method, so that Java can send message to js without assigned handlerName

for example:

    window.WebViewJavascriptBridge.init(function(message, responseCallback) {
        console.log('JS got a message', message);
        var data = {
            'Javascript Responds': 'Wee!'
        };
        console.log('JS responding with', data);
        responseCallback(data);
    });
    webView.send("hello");

will print 'JS got a message hello' and 'JS responding with' in webview console.

Notice

This lib will inject a WebViewJavascriptBridge Object to window object. You can listen to WebViewJavascriptBridgeReady event to ensure window.WebViewJavascriptBridge is exist, as the blow code shows:

    if (window.WebViewJavascriptBridge) {
        //do your work here
    } else {
        document.addEventListener(
            'WebViewJavascriptBridgeReady'
            , function() {
                //do your work here
            },
            false
        );
    }

Or put all JsBridge function call into window.WVJBCallbacks array if window.WebViewJavascriptBridge is undefined, this task queue will be flushed when WebViewJavascriptBridgeReady event triggered.

Copy and paste setupWebViewJavascriptBridge into your JS:

function setupWebViewJavascriptBridge(callback) {
	if (window.WebViewJavascriptBridge) {
        return callback(WebViewJavascriptBridge);
    }
	if (window.WVJBCallbacks) {
        return window.WVJBCallbacks.push(callback);
    }
	window.WVJBCallbacks = [callback];
}

Call setupWebViewJavascriptBridge and then use the bridge to register handlers or call Java handlers:

setupWebViewJavascriptBridge(function(bridge) {
	bridge.registerHandler('JS Echo', function(data, responseCallback) {
		console.log("JS Echo called with:", data);
		responseCallback(data);
    });
	bridge.callHandler('ObjC Echo', {'key':'value'}, function(responseData) {
		console.log("JS received response:", responseData);
	});
});

It same with https://github.com/marcuswestin/WebViewJavascriptBridge, that would be easier for you to define same behavior in different platform between Android and iOS. Meanwhile, writing concise code.

License

This project is licensed under the terms of the MIT license.

jsbridge's People

Contributors

akai avatar anshiii avatar beilo avatar bingostyle avatar codermonkie avatar cw881014 avatar guofeng007 avatar imliujun avatar jitpack-io avatar joe223 avatar kingwang666 avatar landchanning avatar markzhai avatar petter-gao avatar sdarchy avatar springhgui avatar turkyden avatar uknownothingsnow avatar warnerliu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jsbridge's Issues

Release new build with Callback working?

The latest build - 1.0.4 does not have callback working. Trying to get the latest jar from Jitpack with the latest commit gives a no artifact error. Can a new version with working Callback be released?

示例运行后,点击按钮“发送消息给Native”和“调用Native方法”均无反映

你好,我将你的这个示例在手机上安装后,有点问题:

  1. 点击按钮“发送消息给Native”和“调用Native方法”均无反映

//send message to native
window.WebViewJavascriptBridge.send(
data
, function(responseData) {
document.getElementById("show").innerHTML = "repsonseData from java, data = " + responseData
}
);

//call native method
window.WebViewJavascriptBridge.callHandler(
'submitFromWeb'
, {'param': str1}
, function(responseData) {
document.getElementById("show").innerHTML = "send get responseData from java, data = " + responseData
}
);
这两个方法,java都无法收到调用。

  1. 点击Java调用Web按钮,界面上可以显示出data from java: = data from android,但java无法收到回调。

bridge.registerHandler("functionInJs", function(data, responseCallback) {
document.getElementById("show").innerHTML = ("data from Java: = " + data);
var responseData = "Javascript Says Right back aka!";
responseCallback(responseData); //这里的回调,java收不到
});

手机安卓版本4.3

Callback function

Hi I am trying to store the callback function as a object and wanted to call onCallback() later when event occurs. When i am calling callback.OnCallback(), it is not hitting the JS callback method. Can you please help me with this. Thanks in advance.

Not supported for JS Promise

When JavaScript uses Promise framework to call methods, this library fails to give callback to the method. Please let me know if we can do something to support Promise calls.

Ex:

return new Promise(function (resolve, reject) {
function onResultOK(data) {
console.log('onResultOK');
resolve(data);
}

                       function onResultError(error) {
                       console.log('onResultError: %s', error);
                       reject(error);
                       }
                       console.log('this call is  a promise');
                       Android.nativeMethod(cons, onResultOK, onResultError); // Calling native android method.

                       });

不能进行CallBackFunction的序列化

我在这里想做一下intent传递,到另一个activity中,去执行 function.onCallBack("aa")回调,所有我要做CallBackFunction的序列化,但是我把所有没有进行序列化的类都进行了序列化,但是还是不行能帮忙看一下吗

`public class ChangeViewRegisterhandle extends BaseRegisterHandle implements Serializable {
/打开一个新模态/
webview.registerHandler("present", new BridgeHandler() {
@OverRide
public void handler(String data, CallBackFunction function) {
try {
String url = JsonUtils.getJSonString(data, "url");
Intent intent = new Intent(getHfaxFragment().getActivity(), HfaxActivity.class);
intent.putExtra("url", url);
if (function != null) {
// 这里进行CallBackFunction的序列化
callBack = new HfaxSerializableCallBack();
callBack.setCallBack(function);
Bundle bundle = new Bundle();
bundle.putSerializable(HfaxConstant.HFAX_PRESENTCALLBACK, callBack);
intent.putExtras(bundle);
}
getHfaxFragment().getActivity().startActivity(intent);

        } catch (JSONException e) {
            e.printStackTrace();
            LogUtils.v("tag", getClass().getSimpleName() + " json解析失败……");
        }
    }
});     

}
// 这是序列化类
public class HfaxSerializableCallBack implements Serializable {
private static final long serialVersionUID = 2L;

private CallBackFunction callBackFunction;

public CallBackFunction getCallBack() {
    return callBackFunction;
}

public void setCallBack(CallBackFunction callBackFunction) {
    this.callBackFunction = callBackFunction;
}

}
`

W/System.err: java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.hfax.hfaxsdk.tools.HfaxSerializableCallBack)
W/System.err: at android.os.Parcel.writeSerializable(Parcel.java:1468)
W/System.err: at android.os.Parcel.writeValue(Parcel.java:1416)
W/System.err: at android.os.Parcel.writeArrayMapInternal(Parcel.java:686)
W/System.err: at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330)
W/System.err: at android.os.Bundle.writeToParcel(Bundle.java:1079)
W/System.err: at android.os.Parcel.writeBundle(Parcel.java:711)
W/System.err: at android.content.Intent.writeToParcel(Intent.java:7797)
W/System.err: at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2642)
W/System.err: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1509)
W/System.err: at android.app.Activity.startActivityForResult(Activity.java:3993)
W/System.err: at android.app.Activity.startActivityForResult(Activity.java:3954)
W/System.err: at android.app.Activity.startActivity(Activity.java:4277)
W/System.err: at android.app.Activity.startActivity(Activity.java:4245)
W/System.err: at com.hfax.hfaxsdk.register.ChangeViewRegisterhandle$1.handler(ChangeViewRegisterhandle.java:60)
W/System.err: at com.hfax.hfaxsdk.jsbridge.BridgeWebView$1.onCallBack(BridgeWebView.java:191)
W/System.err: at com.hfax.hfaxsdk.jsbridge.BridgeWebView.handlerReturnData(BridgeWebView.java:85)
W/System.err: at com.hfax.hfaxsdk.jsbridge.BridgeWebViewClient.shouldOverrideUrlLoading(BridgeWebViewClient.java:30)
W/System.err: at com.android.webview.chromium.WebViewContentsClientAdapter.shouldOverrideUrlLoading(WebViewContentsClientAdapter.java:327)
W/System.err: at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(AwContentsClientBridge.java:266)
W/System.err: at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
W/System.err: at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:37)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err: at android.os.Looper.loop(Looper.java:148)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5458)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
W/System.err: Caused by: java.io.NotSerializableException: com.hfax.hfaxsdk.jsbridge.BridgeWebView$1$1
W/System.err: at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1344)
W/System.err: at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
W/System.err: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
W/System.err: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
W/System.err: at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959)
W/System.err: at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360)
W/System.err: at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054)
W/System.err: at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384)
W/System.err: at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
W/System.err: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
W/System.err: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
W/System.err: at android.os.Parcel.writeSerializable(Parcel.java:1463)
W/System.err: ... 26 more

java调用js 不执行方法

这里,在 js 中定义

WebViewJavascriptBridge.registerHandler("getMedicineConfigs", function (data, responseCallback) { console.log("====== data ======" + data); getMedicineConfigs(data); });

当 java中 call

webView.callHandler("getMedicineConfigs", JSON.toJSONString(response.getMedicineConfigs()), null);

按照 下面js中定义的

function _handleMessageFromNative(messageJSON) { console.log(messageJSON); if (receiveMessageQueue) { receiveMessageQueue.push(messageJSON); } else { _dispatchMessageFromNative(messageJSON); } }

只会加入到queue,而不会 dispatch

使用WebViewJavascriptBridge.js

你好,我是新人,想问一下我的html怎么加载WebViewJavascriptBridge.js文件呢?WebViewJavascriptBridge.js在android端。即我的app需要加载任意html页面,那么html中怎么识别WebViewJavascriptBridge呢?谢谢哈~

webview.loadDataWithBaseURL方式加载页面,页面中有url链接时导致老页面刷新为新页面问题

我的问题是这样的.
Activity1里面用webview.loadDataWithBaseURL方式加载页面,然后改页面里有另外的url.
我们的需求是点击内部url时跳转到Activity2,该Activity2里面也有一个BridgeWebView, BridgeWebView.loadUrl(url);的方式将改url加载出来.

问题是:
当Activity2加载url时,Activity1里面的内容也被重新加载为Activity1里的url的内容.
求大神指教该问题怎么破呢?期待回复,提前感谢!

org.json.JSONException: Unterminated object at character

org.json.JSONException: Unterminated object at character 51 of [{"responseId":"JAVA_CB_4_2099","responseData":"{"isCanBuy":false,"tempOrderVO":{"orderStoreViewList":[{"goodsAmount":158,"baseGoodsAmount":258,"oriGoodsAmount":158,"goodsViewList":[{"id":287001,"goodsPrice":14,"basePrice":24,"storeId":1000},{"id":287015,"goodsPrice":16,"basePrice":26,"storeId":1000}],"storeId":"1000","orderAmount":158,"baseOrderAmount":258,"oriOrderAmount":158,"discountAmount":100}],"allOrderAmount":"158.00","allBaseOrderAmount":"258.00","allOriOrderAmount":"158.00","discountAmount":"100.00"}}"}]

在解析的时候出错。
Android4.4以上版本正常,4.4一下版本出错。

汉字会乱码或显示出错

bridge.callHandler('test',{"content":"乐乐乐乐"}, function(response) {
alert(response);
}

类似这种, 在android里,取到content时,汉字不正确了,

Please provide Licence or NOTICE file

Hi, I would like to use your open source code, please provide Licence or NOTICE file in your source code, so that I can include it when I distribute the binary.

Thanks

混淆规则

请问,这个库需要混淆吗?混淆规则是什么样的呢?

java方法调用不到js方法

I/Web Console: {"data":"eeoioieoirpwipeiepwoie","handlerName":"functionInJs","callbackId":"JAVA_CB_1_4158"} at null:1
I/Web Console: WebViewJavascriptBridge: WARNING: javascript handler threw. at null:1
这是什么原因?

Android 4.4 以下没法用啊

你好,Android 4.4以下,设置iframe的src, 但是webviewclient 的shouldOverrideUrlLoading不会触发啊,这样整个框架就没法用了。请问有什么解决办法吗

Can not use this lib in gradle

I added compile 'com.github.lzyzsd.jsbridge:library:1.0.0' into gradle.build ,but there is a error:

Error:Failed to find: com.github.lzyzsd.jsbridge:library:1.0.0

how Can I resolve this problem

请问下面这个崩溃是JsBridge这个库造成的吗?

10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: Activity com.talkweb.cloudcampus.jsbridge.WebActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$Connection@429edcd8 that was originally bound here
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: android.app.ServiceConnectionLeaked: Activity com.talkweb.cloudcampus.jsbridge.WebActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$Connection@429edcd8 that was originally bound here
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.LoadedApk$ServiceDispatcher.(LoadedApk.java:979)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:873)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ContextImpl.bindServiceAsUser(ContextImpl.java:1818)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ContextImpl.bindService(ContextImpl.java:1806)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.content.ContextWrapper.bindService(ContextWrapper.java:503)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.speech.tts.TextToSpeech.connectToEngine(TextToSpeech.java:687)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.speech.tts.TextToSpeech.initTts(TextToSpeech.java:656)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.speech.tts.TextToSpeech.(TextToSpeech.java:609)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.webkit.AccessibilityInjector$TextToSpeechWrapper.(AccessibilityInjector.java:696)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.webkit.AccessibilityInjector.addTtsApis(AccessibilityInjector.java:492)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.webkit.AccessibilityInjector.addAccessibilityApisIfNecessary(AccessibilityInjector.java:173)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.webkit.AccessibilityInjector.updateJavaScriptEnabled(AccessibilityInjector.java:427)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.webkit.WebViewClassic.updateJavaScriptEnabled(WebViewClassic.java:3523)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.webkit.WebSettingsClassic.setJavaScriptEnabled(WebSettingsClassic.java:1572)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.talkweb.cloudcampus.jsbridge.BridgeWebView.init(BridgeWebView.java:62)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.talkweb.cloudcampus.jsbridge.BridgeWebView.(BridgeWebView.java:36)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.talkweb.cloudcampus.view.ProgressWebView.(ProgressWebView.java:18)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at java.lang.reflect.Constructor.constructNative(Native Method)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.view.LayoutInflater.createView(LayoutInflater.java:600)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.talkweb.cloudcampus.ui.base.BaseActivity.onCreate(BaseActivity.java:64)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.talkweb.cloudcampus.ui.base.TitleActivity.onCreate(TitleActivity.java:25)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.Activity.performCreate(Activity.java:5369)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ActivityThread.access$700(ActivityThread.java:165)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.os.Handler.dispatchMessage(Handler.java:99)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.os.Looper.loop(Looper.java:137)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at android.app.ActivityThread.main(ActivityThread.java:5450)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at java.lang.reflect.Method.invokeNative(Native Method)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at java.lang.reflect.Method.invoke(Method.java:525)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
10-13 10:03:54.830 18254-18254/com.talkweb.cloudcampus E/ActivityThread: at dalvik.system.NativeStart.main(Native Method)

同步异步问题

大神们好,我想请问一下,其中的回调函数可以做成“异步”的吗?不然卡在页面上,效果不好啊。感谢!具体怎做呢?开个线程吗?

iframe 无法创建

华为荣耀6,5.11系统
在demo的MainActivity中
onCreate的webView = (BridgeWebView) findViewById(R.id.webView);后加上
webView.loadUrl("http://www.baidu.com");

js的_createQueueReadyIframe方法将无法创建iframe

Send data is a JSON string to js while happen error

when I call the Method

webView.callHandler(jsHandlerName, data, new CallBackFunction() {
@OverRide
public void onCallBack(String dataFromJS) { } });

and data is a json String as :

{"misp_rate": 0.0, "miss_rate": 0.0, "reading_difficulty": 3, "sentence": "What's your name?", "sentscore": 7.729825044290912, "hypsent": "", "redu_rate": 100.0, "score": 0.0, "frame_stats": [{"end": 0.0, "fluency": "ok", "start": 0.0, "score": 0.0, "word": "WHAT'S", "class": "missing"}, {"end": 0.0, "fluency": "ok", "start": 0.0, "score": 0.0, "word": "YOUR", "class": "missing"}, {"end": 0.0, "fluency": "ok", "start": 0.0, "score": 0.0, "word": "NAME", "class": "missing"}], "result": [{"end": 0.0, "fluency": "ok", "start": 0.0, "score": 0.0, "word": "WHAT'S", "class": "missing"}, {"end": 0.0, "fluency": "ok", "start": 0.0, "score": 0.0, "word": "YOUR", "class": "missing"}, {"end": 0.0, "fluency": "ok", "start": 0.0, "score": 0.0, "word": "NAME", "class": "missing"}], "overall_score_grade": [1.0, 0.16716503179825531, 0.04837733590220021, 0.005763443891519606, 0.0009540585770522334, 6.666328219118981e-20, 0.0, 0.0, 0.0], "frames": 0.0, "vocal_score": 47.2583396248}

will happen a err:07-06 11:22:17.740: I/chromium(12174): [INFO:CONSOLE(1)] "Uncaught SyntaxError: Unexpected identifier", source: (1)

JS调用Android端没有的方法会抛空指针异常

UncaughtException in Thread main
java.lang.NullPointerException
at com.github.lzyzsd.jsbridge.BridgeWebView$1.onCallBack(BridgeWebView.java:228)
at com.github.lzyzsd.jsbridge.BridgeWebView.handlerReturnData(BridgeWebView.java:75)
at com.github.lzyzsd.jsbridge.BridgeWebView.access$000(BridgeWebView.java:23)
at com.github.lzyzsd.jsbridge.BridgeWebView$BridgeWebViewClient.shouldOverrideUrlLoading(BridgeWebView.java:91)
at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:354)
at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:488)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5493)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041)
at dalvik.system.NativeStart.main(Native Method)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.