0

我正在使用 startLockTask(); 我的应用程序中的方法锁定了我当前的任务/活动。我的应用程序也是设备所有者,并使用以下代码将我的应用程序包列入锁定任务模式,然后再调用 startLockTask();

try
{
   String PLAYER_PACKAGE = this.getPackageName();
   String[] APP_PACKAGES = {PLAYER_PACKAGE};

   DevicePolicyManager dpm = (DevicePolicyManager) this.getSystemService(Context.DEVICE_POLICY_SERVICE);
   ComponentName mDeviceAdmin = new ComponentName(this, DeviceAdminSampleReceiver.class);

   if(!dpm.isDeviceOwnerApp(this.getPackageName())){
       return;
   }

   // Whitelist app package for LockTask mode
   dpm.setLockTaskPackages(mDeviceAdmin, APP_PACKAGES);

   // First, confirm that this package is whitelisted to run in lock task mode.
   if (dpm.isLockTaskPermitted(this.getPackageName())) {
         this.startLockTask();

         // Enable the Home and Overview buttons so that our custom launcher can respond
         // using our custom activities. Implicitly disables all other features.
         dpm.setLockTaskFeatures(mDeviceAdmin,
                        DevicePolicyManager.LOCK_TASK_FEATURE_HOME |
                                DevicePolicyManager.LOCK_TASK_FEATURE_KEYGUARD |
                                DevicePolicyManager.LOCK_TASK_FEATURE_OVERVIEW);
    }
}catch (Exception e){}

问题是有时我的应用程序不是设备所有者导致我无法运行:

dpm.setLockTaskPackages(mDeviceAdmin, APP_PACKAGES);

所以,我想知道是否有一种等效的方法可以使用一些 ADB 命令来实现与“dpm.setLockTaskPackages”相同的行为。

谢谢。

4

1 回答 1

0

为什么您不对这部分强制设置设备管理员权限?在你的活动中类似的东西:

compName = new ComponentName(this, AppAdminReceiver.class);

Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, compName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "Explain why we need this permission");
startActivityForResult(intent, RESULT_ENABLE);

DevicePolicyManager manager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
   
if(manager != null && manager.isAdminActive(compName)) {
    // Device Admin

}else {
    // Not Device Admin
    // Go back to previous Activity

}

编辑:

要使用 ADB 将 App 设置为设备所有者,您可以使用以下命令:

dpm set-device-owner com.package.name/.Package.DeviceOwnerReceiver 

请注意,如果您将应用程序设置为设备所有者,则在重置手机之前无法将其删除。

于 2020-08-16T16:14:17.177 回答