2016-09-20 90 views
2

我正在使用类似于https://github.com/evgenyneu/js-evaluator-for-android的WebView在WebView中执行javascript,并使用@JavascriptInterface注释方法将结果返回给java。JavascriptInterface不适用于Android 5

我在一个使用dexguard模糊处理的库项目中执行此操作。

这是Android上的7,6和5,我还使用该库在Android应用程序工作正常,它的工作原理使用ProGuard时除外,它停止工作在Android上5,但仍适用于Android 6

我的目标是SDK 24,最小值是8,但代码只能在21以上使用。 @JavascriptInterface注释和所有的类都免于混淆,但是,这仍然不适用于Android 5和6.它在7上工作。

任何想法我做错了什么?

后甚至更多的测试,我可以断定,它开始工作时释放我让我释放buildtype可调试:

release { 
     minifyEnabled true 
     debuggable true 
} 
+0

有没有张贴在您logcat的任何错误? – fakataha

+0

没有重要性。问题是,我在服务中使用了js-evaluation-for-android,并且在加载页面之前,一些webview版本会检查您是否在主循环中。我不得不在主要活套上运行代码来解决这个问题。 – Elias

+0

@Elias:你有解决这个问题吗?至于为什么它不工作。我面临同样的问题。谢谢 – Neha

回答

0

的问题是,我是在一个服务做这个,有的网页流量实现检查如果你在主要的活套上跑步。

一个解决方案,我正在执行它的主尺蠖:

this.handler = new Handler(Looper.getMainLooper()); 
this.handler.postDelayed(new Runnable() 
    { 
     @Override 
     public void run() 
     { 
      // create a webview 
      final WebView webView = new WebView(context); 

      // etc 
     } 
    });