2016-09-20 25 views
2

https://github.com/evgenyneu/js-evaluator-for-androidのようなWebViewを使用して、WebViewでjavascriptを実行し、その結果を@JavascriptInterfaceアノテーション付きメソッドでjavaに返します。JavascriptInterfaceがAndroid 5で動作しない

私はdexguardで難読化されたライブラリプロジェクトでこれを行います。

これは私もAndroidアプリでライブラリを使用しています、それはProGuardのを使用している場合を除いて動作しますが、7 Android上で正常に動作し6と5され、それがAndroidの5に動作を停止し、まだ6

Android上で動作します

SDK 24をターゲットにした場合、最小値は8ですが、コードは21以上でのみ使用されます。 @ JavascriptInterfaceアノテーションとすべてのクラスは難読化されていませんが、アンドロイド5,6では動作しません。それは7で動作します。

私は間違って何をしていますか?

も、より多くのテストの後、私は私のリリースbuildtypeのデバッグを行うとき、私はそれがリリースに取り組んで起動することを結論付けることができます:

release { 
     minifyEnabled true 
     debuggable true 
} 
+0

はあなたのlogcatに掲載がすべてのエラーですか? – fakataha

+0

重要ではありません。問題は、サービスでjs-evaluator-for-androidを使用していて、ページをロードする前にメインルーパーにいるかどうかをチェックするWebviewのバージョンがいくつかあることでした。私はそれを修正するためにメインルーパーでコードを実行しなければならなかった。 – Elias

+0

@Elias:これに解決策がありましたか?それがなぜ機能していないのかについて。私は同じ問題に直面しています。ありがとう – Neha

答えて

0

問題は、私はサービスでこれをやっていた、といくつかのWebViewの実装が確認するということでしたあなたがメインルーパーで走っているなら。私のためのソリューションをメインルーパー上でそれを実行していた

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 
     } 
    }); 
関連する問題