android – 导致这个NullpointerException的原因是什么?

我收到了一份包含以下日志内容的崩溃报告:

java.lang.NullPointerException
at android.webkit.PluginFullScreenHolder.show(PluginFullScreenHolder.java:85)
at android.webkit.WebView$PrivateHandler.handleMessage(WebView.java:8553)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

我尝试在网上搜索PluginFullScreenHolder,但第85行似乎是我发现的类中的注释.

我猜测崩溃与WebView有关 – 可能是因为我正在尝试加载null,但我对此非常不确定,特别是因为我没有看到URL为null的方法.

我认为该报告来自Galaxy Nexus(在Android 4.0上),如果这有任何区别,但我不确定.如果没有,那就是Honeycomb设备.

有PluginFullScreenHolder经验的人吗?

这是我的代码

web = (WebView) findViewById(R.id.webView1);
web.setBackgroundColor(android.R.color.black);
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setPluginsEnabled(true);
web.getSettings().setUserAgent(1);
web.getSettings().setSupportZoom(false);
web.loadUrl("http://www.justin.tv/widgets/live_embed_player.swf?auto_play=true&fullscreen=true&start_volume=100&hostname=www.justin.tv&channel=" + this.getIntent().getExtras().getString("channelName"));

奇怪的是,市场的崩溃报告没有提到任何关于我的代码的事情 – 没有什么事情 – 你正在查看上面的完整日志.毫无疑问,它是PluginFullScreenHolder.java.

编辑2:

找到了正确的课程:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/webkit/PluginFullScreenHolder.java#PluginFullScreenHolder.show%28%29

有问题的一行是:

client.onShowCustomView(mLayout, mOrientation, mCallback);
最佳答案
这是PluginFullScreenHolder.java source code for android 4.0.

在第84行,您有mWebView.getWebChromeClient(),它根据您的异常返回null(它在第85行使用,没有空检查).

解决方法是设置一个空的WebChromeClient(当可能影响浏览器UI的事件发生时调用,例如,在此处发送进度更新和JavaScript警报):

web.setWebChromeClient(new WebChromeClient());

但这真的很奇怪,因为它永远不应该是空的.

转载注明原文:android – 导致这个NullpointerException的原因是什么? - 代码日志