Есть ли способ внести приложения в белый список для режима блокировки задач с помощью команд ADB вместо диспетчера политик устройств?
Я использую 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);
Итак, мне интересно, существует ли эквивалентный метод для достижения того же поведения, что и "dpm.setLockTaskPackages", с использованием некоторых команд ADB.
Спасибо.
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, вы можете использовать команду:
dpm set-device-owner com.package.name/.Package.DeviceOwnerReceiver
Обратите внимание, что если вы установите приложение как владелец устройства, вы не сможете удалить его, пока не сбросите настройки телефона.