有没有办法使用 ADB 命令而不是设备策略管理器将应用程序列入锁定任务模式的白名单?
Posted
技术标签:
【中文标题】有没有办法使用 ADB 命令而不是设备策略管理器将应用程序列入锁定任务模式的白名单?【英文标题】:Is there a way to whitelist apps for lock task mode using ADB commands instead of Device policy manager? 【发布时间】:2020-11-17 21:08:03 【问题描述】:我正在使用 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”相同的行为。
谢谢。
【问题讨论】:
【参考方案1】:为什么不强制这部分的设备管理员权限?在你的活动中类似的东西:
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
请注意,如果您将应用程序设置为设备所有者,则在重置手机之前无法将其删除。
【讨论】:
dpm.setLockTaskPackages(mDeviceAdmin, APP_PACKAGES);仅适用于设备所有者,不适用于设备管理员。虽然可以请求管理员权限,但如果使用 adb 失败,则无法请求设备所有者以上是关于有没有办法使用 ADB 命令而不是设备策略管理器将应用程序列入锁定任务模式的白名单?的主要内容,如果未能解决你的问题,请参考以下文章