Запустите другое приложение в режиме киоска из приложения владельца устройства в Android Lollipop

Есть ли возможность запустить другое приложение стороннего производителя, заблокированное в режиме киоска на Android L? Было бы здорово иметь возможность сделать это без использования root-доступа. Но если это невозможно без использования root-доступа, это также будет решением для меня.

Я успешно разработал приложение, которое является владельцем устройства на моем устройстве и может использовать startLockTask() способ заблокировать себя в режиме киоска.

2 ответа

Если у вас есть приложение, которое уже является владельцем устройства (как вы сказали), вы сможете звонить из этого приложения:

DevicePolicyManager devicePolicyManager = (DevicePolicyManager) context.getSystemService(Activity.DEVICE_POLICY_SERVICE);
devicePolicyManager.setLockTaskPackages(new ComponentName(context.getApplicationContext(), YourDeviceOwnerReceiver.class), new String[]{"the.package.you.want.to.allow.to.be.in.kiosk.mode"});

Затем из действия, которое вы хотите установить в режиме киоска (который должен быть в the.package.you.want.to.allow.to.be.in.kiosk.mode), ты можешь позвонить startLockTask(),

Если вы можете заблокировать свое собственное приложение в режиме киоска, вы можете запустить другое приложение, выполнив Intent() с некоторыми flags указание на то, что ваша деятельность направлена ​​на продолжение вашего киоска. Вам также придется возиться с режимом запуска вашего приложения в AndroidManifest. Возиться с singleTop, singleTask а также singleInstance пока не найдешь, что хочешь. singleTop должен быть тот, который вы ищете, но это трудно различить.

Если ничего не помогает, вы всегда можете запустить свое намерение, а затем сделать что-то вроде 'adb kill SystemUI' через exec("su") для того, чтобы убить строку состояния, программные клавиши и клавиши и навигацию. В зависимости от устройства SystemUI, вероятно, перезагрузится сам. Вы можете использовать таймер, хотя. Грязный обходной путь, но это и есть киоск. Для кода, вы можете использовать ответ здесь: exec su внутри Android-приложения

Надеюсь, я помог,

Другие вопросы по тегам