Skip to content

Commit d300f1c

Browse files
committed
fix 修复h5页面无故竖屏或横屏的情况
1 parent ad84afa commit d300f1c

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

ByWebView/src/main/java/me/jingbin/web/ByWebChromeClient.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import android.support.annotation.Nullable;
1212
import android.support.annotation.RequiresApi;
1313
import android.text.TextUtils;
14-
import android.util.Log;
1514
import android.view.LayoutInflater;
1615
import android.view.View;
1716
import 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) {

ByWebView/src/main/java/me/jingbin/web/ByWebView.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,23 @@ public static Builder with(@NonNull Activity activity) {
305305
return new Builder(activity);
306306
}
307307

308+
/**
309+
* 修复可能部分h5无故竖屏问题,如果h5里有视频全屏播放请禁用
310+
*/
311+
public void setFixScreenPortrait(boolean fixScreenPortrait) {
312+
if (mWebChromeClient != null) {
313+
mWebChromeClient.setFixScreenPortrait(fixScreenPortrait);
314+
}
315+
}
316+
317+
/**
318+
* 修复可能部分h5无故横屏问题,如果h5里有视频全屏播放请禁用
319+
*/
320+
public void setFixScreenLandscape(boolean fixScreenLandscape) {
321+
if (mWebChromeClient != null) {
322+
mWebChromeClient.setFixScreenLandscape(fixScreenLandscape);
323+
}
324+
}
308325

309326
public static class Builder {
310327
private Activity mActivity;

0 commit comments

Comments
 (0)