From 53f12ae50eae7e8cdcccf8d9ed25784284d3a9f3 Mon Sep 17 00:00:00 2001 From: Steve Elliott Date: Mon, 13 May 2019 17:14:15 -0400 Subject: [PATCH] Disable rotation suggestion when global actions panel is visible Building upon the existing logic which locks the rotation to portrait, this change suppreses the rotation suggestion button which appears in the nav-bar. Fixes: 132076875 Test: manual Change-Id: I7841bb5fe59ad09998117c93269e019e95494989 --- .../globalactions/GlobalActionsDialog.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java index e87ff520e0280..acc0197c07b81 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java @@ -25,6 +25,7 @@ import android.app.ActivityManager; import android.app.Dialog; import android.app.KeyguardManager; import android.app.PendingIntent; +import android.app.StatusBarManager; import android.app.WallpaperManager; import android.app.admin.DevicePolicyManager; import android.app.trust.TrustManager; @@ -38,7 +39,9 @@ import android.database.ContentObserver; import android.graphics.drawable.Drawable; import android.media.AudioManager; import android.net.ConnectivityManager; +import android.os.Binder; import android.os.Handler; +import android.os.IBinder; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; @@ -75,6 +78,7 @@ import com.android.internal.colorextraction.ColorExtractor.GradientColors; import com.android.internal.colorextraction.drawable.ScrimDrawable; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.internal.statusbar.IStatusBarService; import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.TelephonyProperties; import com.android.internal.util.EmergencyAffordanceManager; @@ -1501,6 +1505,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private final Context mContext; private final MyAdapter mAdapter; + private final IStatusBarService mStatusBarService; + private final IBinder mToken = new Binder(); private MultiListLayout mGlobalActionsLayout; private Drawable mBackgroundDrawable; private final SysuiColorExtractor mColorExtractor; @@ -1516,6 +1522,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mContext = context; mAdapter = adapter; mColorExtractor = Dependency.get(SysuiColorExtractor.class); + mStatusBarService = Dependency.get(IStatusBarService.class); // Window initialization Window window = getWindow(); @@ -1574,6 +1581,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mContext, true, RotationUtils.ROTATION_NONE); } + // Disable rotation suggestions, if enabled + setRotationSuggestionsEnabled(false); + FrameLayout panelContainer = new FrameLayout(mContext); FrameLayout.LayoutParams panelParams = new FrameLayout.LayoutParams( @@ -1732,11 +1742,24 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } + private void setRotationSuggestionsEnabled(boolean enabled) { + try { + final int userId = Binder.getCallingUserHandle().getIdentifier(); + final int what = enabled + ? StatusBarManager.DISABLE2_NONE + : StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS; + mStatusBarService.disable2ForUser(what, mToken, mContext.getPackageName(), userId); + } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); + } + } + private void resetOrientation() { if (mResetOrientationData != null) { RotationPolicy.setRotationLockAtAngle(mContext, mResetOrientationData.locked, mResetOrientationData.rotation); } + setRotationSuggestionsEnabled(true); } @Override