设置客户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)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐