Запустите другое приложение в режиме киоска из приложения владельца устройства в 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-приложения
Надеюсь, я помог,