Изменение результата 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="" />

Вы не можете сделать это из приложения. Вам нужно будет создать собственный образ системы с нужным вам поведением.

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