Код: Выделить всё
context.startActivity(new Intent().setPackage(packageName).setAction(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Однако вышеописанное НЕ работает, когда рассматриваемое приложение изначально было запущено из другого приложения. Например, если com.android.settings изначально был запущен из системного уведомления или из другого приложения, приведенный выше код запустит новый экземпляр com.android.settings вместо вызова того, который уже отображался в последних приложениях. Я пробовал добавлять разные флаги, но безрезультатно.
Есть ли у кого-нибудь решение этой проблемы или хотя бы объяснить, почему это происходит?
РЕДАКТИРОВАТЬ:
Я добавляю дополнительные шаги о том, как воспроизвести это и результаты действий активности adb Shell dumpsys.
Шаги для воспроизвести:
- Очистить все задачи
- Попробуйте удалить приложение администратора устройства прямо из панели запуска, перетащив его на кнопку «Удалить». Произойдет сбой, и отобразится уведомление.
- Нажмите на уведомление, чтобы открыть приложение «Настройки» на странице администратора устройства.
- Запустите com.android. настройки из кода:
ИЛИ
Код: Выделить всё
context.startActivity(packageManager.getLaunchIntentForPackage("com.android.settings"));
Вот результат «действий активности оболочки adb dumpsys» для:
Настройки, открытые при неудачном удалении администратора устройства.
Настройки открываются как при неудачном удалении администратора устройства, так и при наш собственный код.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -a-service
Мобильная версия