I implemented a fix that seems to work ok

Instead of calling `injectDeferredObject` in the `injectScriptCode` branch 
(here: 
https://github.com/apache/cordova-plugin-inappbrowser/blob/master/src/android/InAppBrowser.java#L254)

I instead call my new function `runJavascriptWithResult(args.getString(0), 
callbackContext)`

The implementation of this function is

```
private void runJavascriptWithResult(String scriptToInject, CallbackContext 
callbackContext) {
        final String finalScriptToInject = scriptToInject;
        final CallbackContext finalCallbackContext = callbackContext;
        final String callbackId = callbackContext.getCallbackId();
        this.cordova.getActivity().runOnUiThread(new Runnable() {
            @SuppressLint("NewApi")
            @Override
            public void run() {
                inAppWebView.evaluateJavascript(finalScriptToInject, new 
ValueCallback<String>() {
                    @Override
                    public void onReceiveValue(String s) {
                        PluginResult pluginResult;
                        try {
                          pluginResult = new 
PluginResult(PluginResult.Status.OK, new JSONArray("[" + s + "]"));
                        } catch(JSONException e) {
                            pluginResult = new 
PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
                        }
                        finalCallbackContext.sendPluginResult(pluginResult);
                    }
                });
            }
        });
    }
```

Would this be a suitable fix? If so I can create a PR

[ Full content available at: 
https://github.com/apache/cordova-plugin-inappbrowser/issues/303 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to