Изменение результата getRecentTasks
У меня есть приложение, разработанное для планшета на рабочем месте, где несколько человек будут использовать камеру как часть своей рутины. Несмотря на то, что уместно и необходимо, чтобы супервизор покинул приложение, другим людям должно быть трудно случайно сделать это. Тем не менее, долгое нажатие клавиши home довольно легко сделать случайно. Я сделал это сам. Это поднимает список недавних задач; пользователь может нажать на любой из них, и они потерялись, поскольку некоторые из них не так сложны, как ваш обычный владелец смартфона.
Программно вы можете получить этот список через getRecentTasks. Мой вопрос заключается в том, как я могу удалить все, кроме самой последней (моей) задачи из этого списка, уменьшить длину до одного элемента или изменить перечисленные задачи так, чтобы они указывали на мое приложение. Я знаю, что это возможно: Toddler Lock делает это.
Моей первой попыткой было изменить возвращенные намерения в надежде, что они были переданы по ссылке. Нет такой удачи. Есть другие идеи?
(Я не говорю о коротком нажатии клавиши "Домой". Я уже понял, что это частично, основываясь на найденных здесь вещах.)
2 ответа
Авторы благодарности обращаются к автору Toddler Lock, с которым я говорил об этой проблеме. Введенные ошибки полностью мои.
Создайте в своем манифесте запрещенную деятельность с сродством, равным пустой строке. В вашей программе включите его, а затем запустите, используя помеченное намерением FLAG_ACTIVITY_NEW_TASK. Это будет отображаться в недавних мероприятиях. Отключите задачу, и она исчезнет с дисплея.
Сделайте их достаточно, и вы увидите список последних действий. Если у него есть способ вернуть больше действий, чем фиктивных действий, пользователь сможет выйти из вашей программы.
Убедитесь, что вы отключили задачи при выходе, и убедитесь, что если вы выбираете одну из этих задач из недавних действий, ваша программа делает что-то разумное.
Вот пример двух задач в моем манифесте:
<activity android:name="com.foo.android.recentactivity.Clear1"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
android:label="."
android:enabled="false"
android:icon="@drawable/clearicon"
android:taskAffinity="" />
<activity android:name="com.foo.android.recentactivity.Clear2"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
android:label="."
android:enabled="false"
android:icon="@drawable/clearicon"
android:taskAffinity="" />
Вы не можете сделать это из приложения. Вам нужно будет создать собственный образ системы с нужным вам поведением.