Я знаю, что подобный вопрос задавался несколько раз прежде, но я прошел через них, и они мне не помогают.Я пытаюсь настроить Samsung Tab A (Android 8.1) как одноразовое устройство.Я уже написал приложение, которое работает отлично, но, поскольку устройство будет использоваться публикой, мне нужно заблокировать его в режиме киоска.Я пытаюсь следовать руководству разработчика по ссылке ниже, но сразу сталкиваюсь с проблемами.
https://developer.android.com/work/dpc/dedicated-devices/lock-task-mode
Итак, первое, что я пытаюсь сделать, это добавить приложение в белый список согласно приведенному примеру:
// Whitelist two apps.
private static final String KIOSK_PACKAGE = "com.example.kiosk";
private static final String PLAYER_PACKAGE = "com.example.player";
private static final String[] APP_PACKAGES = {KIOSK_PACKAGE, PLAYER_PACKAGE};
// ...
Context context = getContext();
DevicePolicyManager dpm =
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName adminName = getComponentName(context);
dpm.setLockTaskPackages(adminName, APP_PACKAGES);
В документации неясно, куда должен идти этот код, но я поместил его в переопределение для onResume()
.
Я использую автоимпорт в Android Studio, но он говорит мне, что getContext()
не может быть найден.Я попытался изменить на getApplicationContext()
и просто использовать this
, как предложено в другом месте, но затем он жалуется, что getComponentName()
не должно иметь никаких параметров.Я попытался просто удалить параметр контекста, используя context.getComponentName()
, а также не используя переменные контекста.Они компилируются, но приложение вылетает на устройстве (на setLockTaskPackages()
).
Я подозреваю, что ключ в том, чтобы выяснить, почему getContext()
не может быть найден, а затем, надеюсь, все остальное встает на свои места.Есть идеи, чего не хватает?