私はNullPointerException
Android 2.3.4 で次の呼び出しを取得しています:
java.lang.NullPointerException
at android.webkit.WebView.addPackageNames(WebView.java:4063)
at com.my.company.MyClass$MyInnerClass.myMethod(MyClass.java:283)
at android.webkit.BrowserFrame.stringByEvaluatingJavaScriptFromString(Native Method)
at android.webkit.BrowserFrame.stringByEvaluatingJavaScriptFromString(Native Method)
at android.webkit.BrowserFrame.loadUrl(BrowserFrame.java:246)
at android.webkit.WebViewCore.loadUrl(WebViewCore.java:1981)
at android.webkit.WebViewCore.access$1400(WebViewCore.java:53)
at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1122)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:674)
at java.lang.Thread.run(Thread.java:1019)
MyClass$MyInnerClass が JavaScript インターフェイスに追加されます。
class MyClass {
// ...
myWebView.addJavascriptInterface(new MyInnerClass(), "MyInnerClass");
// ...
public void myOuterMethod(int param1, int param2) {
// Notify a listener that myOuterMethod was called
}
private class MyInnerClass {
public void myMethod(int param1, int param2) {
myOuterMethod(param1, param2);
}
}
}
そのため、JavaScript 呼び出しMyInnerClass.myMethod(-1, -1)
は Java-JavaScript ブリッジを正常に通過しているように見えますが、呼び出しに失敗しましたaddPackageNames
。これは私のコードではありません。
GrepCodeのandroid.webkit.WebView
クラスを見てきましたが、どうやってこれを引き起こしたのかわかりません。入っている唯一のラインaddPackageNames
は
public void addPackageNames(Set<String> packageNames) {
mWebViewCore.sendMessage(EventHub.ADD_PACKAGE_NAMES, packageNames);
}
だから、私はどちらmWebViewCore
かEventHub
がであるという結論に達しましたnull
。
Android の専門家は、これに光を当てることができますか? これは既知のバグですか? 私がこれを引き起こしたのですか?もしそうなら、どのように?そうでない場合、どうすればこれを防ぐことができますか?