方向改变时的 Android Webview onHideCustomView

Che*_*eng 5 android webview react-native-android android-8.1-oreo

我遇到一个奇怪的问题。

我有一个应用程序,它有一个 webview 来显示一些文章。这些文章有文字、图片和视频,这个 webview 支持全屏播放视频。

这是 onShowCustomView 和 onHideCustomView 的代码。它运行良好,直到 Android 8.1。

@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
    if (mVideoView != null) {
        callback.onCustomViewHidden();
        return;
    }
    mVideoView = view;
    mCustomViewCallback = callback;
    view.setBackgroundColor(Color.BLACK);
    getRootView().addView(view, FULLSCREEN_LAYOUT_PARAMS);
    mWebView.setVisibility(View.GONE);
    // enable orientation change 
    setOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}

@Override
public void onHideCustomView() {
    if (mVideoView == null) {
        return;
    }
    mVideoView.setVisibility(View.GONE);
    getRootView().removeView(mVideoView);
    mVideoView = null;
    mCustomViewCallback.onCustomViewHidden();
    mWebView.setVisibility(View.VISIBLE);
    // force portrait
    setOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Run Code Online (Sandbox Code Playgroud)

在 AndroidManifest 中,活动如下所示:

 <activity
        android:name=".component.ArticleActivity"
        android:configChanges="orientation|screenSize"
        android:hardwareAccelerated="true"
        android:screenOrientation="portrait" />
Run Code Online (Sandbox Code Playgroud)

在 Android 8.1 中,当全屏播放视频时,将方向更改为横向或纵向,将调用 onHideCustomView 并退出全屏模式。

我该如何解决?谢谢