gpt4 book ai didi

android - Chromium webview 似乎不适用于 Android applyOverrideConfiguration

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:15:14 27 4
gpt4 key购买 nike

按照我在 Force locale for Android flavor with resConfig 中描述的更改我面临包含视频的 WebView 问题。该问题仅出现在 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

有什么想法吗?因为有人已经遇到过这个问题吗?

最佳答案

作为@Martin Edlman commented ,它应该适用于此解决方法:

在 Kotlin 中:

override fun getAssets(): AssetManager {
return resources.assets
}

在 Java 中:

@Override
public AssetManager getAssets() {
return getResources().getAssets();
}

关于android - Chromium webview 似乎不适用于 Android applyOverrideConfiguration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32050784/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com