Add currentUiModeSupportsErrorDialogs() into ActivityTaskManager.
The method will be used in AnrTests to check if the system can support ANR Dialog or not. Bug: 149510025 Test: atest AnrTests Change-Id: I7a78be06fcf3c4882931aaea1d330b2cebdc2d84
This commit is contained in:
@@ -126,6 +126,7 @@ package android.app {
|
||||
|
||||
public class ActivityTaskManager {
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void clearLaunchParamsForPackages(java.util.List<java.lang.String>);
|
||||
method public static boolean currentUiModeSupportsErrorDialogs(@NonNull android.content.Context);
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public String listAllStacks();
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void moveTaskToStack(int, int, boolean);
|
||||
method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public boolean moveTopActivityToPinnedStack(int, android.graphics.Rect);
|
||||
|
||||
@@ -23,8 +23,10 @@ import android.annotation.TestApi;
|
||||
import android.compat.annotation.UnsupportedAppUsage;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
@@ -430,4 +432,14 @@ public class ActivityTaskManager {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns whether the current UI mode supports error dialogs (ANR, crash, etc). */
|
||||
public static boolean currentUiModeSupportsErrorDialogs(@NonNull Context context) {
|
||||
final Configuration config = context.getResources().getConfiguration();
|
||||
int modeType = config.uiMode & Configuration.UI_MODE_TYPE_MASK;
|
||||
return (modeType != Configuration.UI_MODE_TYPE_CAR
|
||||
&& !(modeType == Configuration.UI_MODE_TYPE_WATCH && Build.IS_USER)
|
||||
&& modeType != Configuration.UI_MODE_TYPE_TELEVISION
|
||||
&& modeType != Configuration.UI_MODE_TYPE_VR_HEADSET);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5400,14 +5400,11 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
|
||||
final boolean inputMethodExists = !(config.keyboard == Configuration.KEYBOARD_NOKEYS
|
||||
&& config.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH
|
||||
&& config.navigation == Configuration.NAVIGATION_NONAV);
|
||||
int modeType = config.uiMode & Configuration.UI_MODE_TYPE_MASK;
|
||||
final boolean uiModeSupportsDialogs = (modeType != Configuration.UI_MODE_TYPE_CAR
|
||||
&& !(modeType == Configuration.UI_MODE_TYPE_WATCH && Build.IS_USER)
|
||||
&& modeType != Configuration.UI_MODE_TYPE_TELEVISION
|
||||
&& modeType != Configuration.UI_MODE_TYPE_VR_HEADSET);
|
||||
final boolean hideDialogsSet = Settings.Global.getInt(mContext.getContentResolver(),
|
||||
HIDE_ERROR_DIALOGS, 0) != 0;
|
||||
mShowDialogs = inputMethodExists && uiModeSupportsDialogs && !hideDialogsSet;
|
||||
mShowDialogs = inputMethodExists
|
||||
&& ActivityTaskManager.currentUiModeSupportsErrorDialogs(mContext)
|
||||
&& !hideDialogsSet;
|
||||
}
|
||||
|
||||
private void updateFontScaleIfNeeded(@UserIdInt int userId) {
|
||||
|
||||
Reference in New Issue
Block a user