summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/os/Build.java7
-rw-r--r--services/core/java/com/android/server/RescueParty.java22
2 files changed, 26 insertions, 3 deletions
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index 80ecf9789c7b..817cb5bb9add 100644
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -883,8 +883,11 @@ public class Build {
SystemProperties.getInt("ro.debuggable", 0) == 1;
/** {@hide} */
- public static final boolean IS_ENG =
- "eng".equals(getString("ro.build.type"));
+ public static final boolean IS_ENG = "eng".equals(TYPE);
+ /** {@hide} */
+ public static final boolean IS_USERDEBUG = "userdebug".equals(TYPE);
+ /** {@hide} */
+ public static final boolean IS_USER = "user".equals(TYPE);
/**
* Whether this build is running inside a container.
diff --git a/services/core/java/com/android/server/RescueParty.java b/services/core/java/com/android/server/RescueParty.java
index d51e96ad78fb..f078acfd27a1 100644
--- a/services/core/java/com/android/server/RescueParty.java
+++ b/services/core/java/com/android/server/RescueParty.java
@@ -19,6 +19,8 @@ package com.android.server;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.UserInfo;
+import android.os.BatteryManager;
+import android.os.BatteryManagerInternal;
import android.os.Build;
import android.os.RecoverySystem;
import android.os.SystemClock;
@@ -65,7 +67,25 @@ public class RescueParty {
private static SparseArray<Threshold> sApps = new SparseArray<>();
private static boolean isDisabled() {
- return Build.IS_ENG || SystemProperties.getBoolean(PROP_DISABLE_RESCUE, false);
+ // We're disabled on all engineering devices
+ if (Build.IS_ENG) return true;
+
+ // We're disabled on userdebug devices connected over USB, since that's
+ // a decent signal that someone is actively trying to debug the device,
+ // or that it's in a lab environment.
+ if (Build.IS_USERDEBUG) {
+ try {
+ if (LocalServices.getService(BatteryManagerInternal.class)
+ .getPlugType() == BatteryManager.BATTERY_PLUGGED_USB) {
+ return true;
+ } else {
+ }
+ } catch (Throwable ignored) {
+ }
+ }
+
+ // One last-ditch check
+ return SystemProperties.getBoolean(PROP_DISABLE_RESCUE, false);
}
/**