1111import android .support .annotation .Nullable ;
1212import android .support .annotation .RequiresApi ;
1313import android .text .TextUtils ;
14- import android .util .Log ;
1514import android .view .LayoutInflater ;
1615import android .view .View ;
1716import android .webkit .PermissionRequest ;
@@ -42,6 +41,10 @@ public class ByWebChromeClient extends WebChromeClient {
4241 private CustomViewCallback mCustomViewCallback ;
4342 private ByFullscreenHolder videoFullView ;
4443 private OnTitleProgressCallback onByWebChromeCallback ;
44+ // 修复可能部分h5无故横屏问题
45+ private boolean isFixScreenLandscape = false ;
46+ // 修复可能部分h5无故竖屏问题
47+ private boolean isFixScreenPortrait = false ;
4548
4649 ByWebChromeClient (Activity activity , ByWebView byWebView ) {
4750 mActivityWeakReference = new WeakReference <Activity >(activity );
@@ -52,6 +55,14 @@ void setOnByWebChromeCallback(OnTitleProgressCallback onByWebChromeCallback) {
5255 this .onByWebChromeCallback = onByWebChromeCallback ;
5356 }
5457
58+ public void setFixScreenLandscape (boolean fixScreenLandscape ) {
59+ isFixScreenLandscape = fixScreenLandscape ;
60+ }
61+
62+ public void setFixScreenPortrait (boolean fixScreenPortrait ) {
63+ isFixScreenPortrait = fixScreenPortrait ;
64+ }
65+
5566 /**
5667 * 播放网络视频时全屏会被调用的方法
5768 */
@@ -60,7 +71,9 @@ void setOnByWebChromeCallback(OnTitleProgressCallback onByWebChromeCallback) {
6071 public void onShowCustomView (View view , CustomViewCallback callback ) {
6172 Activity mActivity = this .mActivityWeakReference .get ();
6273 if (mActivity != null && !mActivity .isFinishing ()) {
63- mActivity .setRequestedOrientation (ActivityInfo .SCREEN_ORIENTATION_LANDSCAPE );
74+ if (!isFixScreenLandscape ) {
75+ mActivity .setRequestedOrientation (ActivityInfo .SCREEN_ORIENTATION_LANDSCAPE );
76+ }
6477 mByWebView .getWebView ().setVisibility (View .INVISIBLE );
6578
6679 // 如果一个视图已经存在,那么立刻终止并新建一个
@@ -93,7 +106,9 @@ public void onHideCustomView() {
93106 return ;
94107 }
95108 // 还原到之前的屏幕状态
96- mActivity .setRequestedOrientation (ActivityInfo .SCREEN_ORIENTATION_PORTRAIT );
109+ if (!isFixScreenPortrait ) {
110+ mActivity .setRequestedOrientation (ActivityInfo .SCREEN_ORIENTATION_PORTRAIT );
111+ }
97112
98113 mCustomView .setVisibility (View .GONE );
99114 if (videoFullView != null ) {
0 commit comments