我收到了一份包含以下日志内容的崩溃报告:
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
,但我对此非常不确定,特别是因为我看不到网址为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:
有问题的一行是:
client.onShowCustomView(mLayout, mOrientation, mCallback);
答案 0 :(得分:7)
以下是PluginFullScreenHolder.java
source code for android 4.0。
在第84行,你有mWebView.getWebChromeClient()
根据你的异常返回null(它在第85行使用,没有空检查)。
解决方法是设置一个空的WebChromeClient(当可能影响浏览器UI的事件发生时调用,例如,在此处发送进度更新和JavaScript警报):
web.setWebChromeClient(new WebChromeClient());
但这真的很奇怪,因为它永远不应该为空。
答案 1 :(得分:0)
答案 2 :(得分:0)
您是否尝试初始化“网络”?
WebView web = new WebView(this);
web = (WebView) findViewById(R.id.webView1);
如果你声明你的变量
private WebView web;
您将获得NullpointerExeption,您必须初始化该对象。