我一直在爲此苦苦掙扎太久。我希望任何人都可以幫助我。這裏是我的情況:WebView無法找到通過棒棒糖中的addJavascriptinterface公開的對象
在我們的Android應用,從通過Java/Android的我們的WebView我們的路線XMLHttpRequest的,所以我們可以添加的OAuth2令牌和跟蹤請求。這個工作正常,直到Android 5發佈。
啓動Android 5,下面的異常被升高每當web視圖嘗試與在JavaScript暴露對象交互:在不同的配置
java.lang.ClassNotFoundException: Didn't find class "com/company/android/AndroidXMLHttpRequest$AjaxRequest" on path: DexPathList[[zip file "/system/app/webview/webview.apk"],nativeLibraryDirectories=[/system/app/webview/lib/x86_64, /vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:53)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)
Suppressed: java.lang.ClassNotFoundException: Invalid name: com/company/android/AndroidXMLHttpRequest$AjaxRequest
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 6 more
結果:
- 此代碼工作正常上物理和虛擬設備運行Android < 5.
- 此代碼打破ph ysical設備運行Android 5和5.1
- 此代碼工作正常一虛擬設備上運行上虛擬設備的Android 5.0
- 此代碼中斷運行Android 5.1
- 有運行的調試或沒有區別生產版本
關於代碼的一些信息: * WebViewFragment從MainActivity.onCreate
開始。 * WebViewFragment.onCreateView
創建對象暴露於的WebView * JavaScript接口,獲取WebViewClient.onPageFinished
添加*暴露的類是公共 *被暴露類的所有方法都是公開的,有@JavascriptInterface
註釋
開始棒棒糖,WebView已與Android脫鉤,因此可通過Play商店進行升級。這也是東西,從錯誤顯示:
DexPathList[[zip file "/system/app/webview/webview.apk"],nativeLibraryDirectories=[/system/app/webview/lib/x86_64, /vendor/lib64, /system/lib64]]
我看着發行說明發現,如果我們要做的就不同的WebView和addJavaScriptInterface的東西,但我似乎無法找到任何東西。
任何人有任何想法可能是它失敗的原因是什麼?