设置客户app为设备管理者--效果如同:adb shell dpm set-device-owner xxxx
diff --git a/frameworks/base/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/frameworks/base/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 75269035f4..69c01b337d 100755
--- a/frameworks/base/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/frameworks/base/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -12307,7 +12307,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
private boolean isAdb() {
final int callingUid = mInjector.binderGetCallingUid();
- return callingUid == Process.SHELL_UID || callingUid == Process.ROOT_UID;
+ // return callingUid == Process.SHELL_UID || callingUid == Process.ROOT_UID;
+ return true;
}
@Override
diff --git a/packages/apps/Settings/src/com/android/settings/SettingsActivity.java b/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
index 387d8bbab9..4f41060405 100755
--- a/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
+++ b/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
@@ -74,7 +74,7 @@ import com.android.settingslib.development.DevelopmentSettingsEnabler;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.SettingsDrawerActivity;
import com.android.settingslib.utils.ThreadUtils;
-
+import android.app.admin.DevicePolicyManager;
import java.util.ArrayList;
import java.util.List;
@@ -234,9 +234,15 @@ public class SettingsActivity extends SettingsDrawerActivity
@Override
protected void onCreate(Bundle savedState) {
super.onCreate(savedState);
- Log.d(LOG_TAG, "Starting onCreate");
+ Log.d(LOG_TAG, "Starting onCreate-------------runSetDeviceOwner---zgl");
long startTime = System.currentTimeMillis();
+ try {
+ runSetDeviceOwner();
+ } catch (Exception e) {
+ Log.d(LOG_TAG, "Starting onCreate--------e");
+ }
+
final FeatureFactory factory = FeatureFactory.getFactory(this);
mDashboardFeatureProvider = factory.getDashboardFeatureProvider(this);
@@ -824,4 +830,33 @@ public class SettingsActivity extends SettingsDrawerActivity
return bitmap;
}
+
+
+
+
+DevicePolicyManager mDPM;
+private void runSetDeviceOwner() throws android.os.RemoteException {
+mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
+ComponentName mComponent=new ComponentName("xxxxx","xxxxxx.MyAdmin");
+mDPM.setActiveAdmin(mComponent, true /*refreshing*/);
+
+try {
+ if (!mDPM.setDeviceOwner(mComponent, "", 0)) {
+ throw new RuntimeException(
+ "Can't set package " + mComponent + " as device owner.");
+ }
+ } catch (Exception e) {
+ // Need to remove the admin that we just added.
+ // mDPM.removeActiveAdmin(mComponent, UserHandle.USER_SYSTEM);
+ throw e;
+ }
+mDPM.setUserProvisioningState(
+ DevicePolicyManager.STATE_USER_SETUP_FINALIZED, 0);
+ Log.d("qq", "Device owner set to package"+ mComponent);
+ Log.d("qq", "Active admin set to component"+ mComponent.toShortString());
+}
+
+
+
}
(END)