【发布时间】:2015-08-17 12:45:04
【问题描述】:
根据Force locale for Android flavor with resConfig 中的更改描述,我遇到了包含视频的网络视图问题。该问题仅在 API21+ 上出现,并且在删除对 applyOverrideConfiguration 的调用时真正消失。不太清楚如何解决这个问题。
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
at com.android.webview.chromium.WebViewContentsClientAdapter.getDefaultVideoPoster(WebViewContentsClientAdapter.java:1172)
at org.chromium.android_webview.DefaultVideoPosterRequestHandler$1.run(DefaultVideoPosterRequestHandler.java:39)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
从我在 grepcode 上可以找到的内容来看,这将是在获取 ic_media_video_poster 图像时。我确认该图像确实在 sdk 中。 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.1_r1/com/android/webview/chromium/WebViewContentsClientAdapter.java#WebViewContentsClientAdapter.getDefaultVideoPoster%28%29
public Bitmap More ...getDefaultVideoPoster() {
TraceEvent.begin();
Bitmap result = null;
if (mWebChromeClient != null) {
if (TRACE) Log.d(TAG, "getDefaultVideoPoster");
result = mWebChromeClient.getDefaultVideoPoster();
}
if (result == null) {
// The ic_media_video_poster icon is transparent so we need to draw it on a gray
// background.
Bitmap poster = BitmapFactory.decodeResource(
mWebView.getContext().getResources(),
R.drawable.ic_media_video_poster);
result = Bitmap.createBitmap(poster.getWidth(), poster.getHeight(), poster.getConfig());
result.eraseColor(Color.GRAY);
Canvas canvas = new Canvas(result);
canvas.drawBitmap(poster, 0f, 0f, null);
}
TraceEvent.end();
return result;
}
编辑:经过多次测试,我能够在 testApp 中隔离崩溃。它可以在我在 Chromium https://code.google.com/p/chromium/issues/detail?id=521753 上创建的错误报告中找到
有什么想法吗?有人遇到过这个问题吗?
【问题讨论】:
-
您可以尝试将您从
Resources.getSystem().getConfiguration()获得的Configuration传递给applyOverrideConfiguration吗? -
在指定 URL 上遵循评论 #8 并实施解决方法,它可以工作! code.google.com/p/chromium/issues/detail?id=521753#c8