Android - обнаружение запуска приложения из дома или истории - PullRequest
13 голосов
/ 27 марта 2011

Как лучше всего определить, когда Android-приложение запускается с главного экрана / экрана истории?

По сути, я пытаюсь добиться того, чтобы заставить пользователя войти в систему с определенным именем.экраны каждый раз, когда они возвращаются в приложение (то есть они имеют полный доступ ко всем действиям после входа в систему, но, по сути, я хочу, чтобы они проходили повторную аутентификацию, когда возвращаются в приложение через запуск на домашнем экране).

Я знаю, что подобные вопросы задавались ранее (например, как регистрировать запуски приложения) - но ни один из тех, что я видел, еще не смог решить мою проблему.Все идеи приветствуются ...

Ответы [ 4 ]

14 голосов
/ 18 февраля 2013

А как насчет

    if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY )!=0) {
        Log.d(TAG, "Called from history");
    }

?При этом используется простой флаг Intent .

14 голосов
/ 27 марта 2011

Как лучше всего определить, когда Android-приложение было запущено с главного экрана / экрана истории?

Вы не можете, AFAIK.

По сути, я пытаюсь добиться того, чтобы заставить пользователя входить в определенные экраны каждый раз, когда они возвращаются в приложение (то есть они имеют полный доступ ко всем действиям после входа в систему, но, по сути, я хочу, чтобы они повторно аутентифицироваться, когда они возвращаются в приложение через запуск на главном экране).

Пожалуйста, используйте разумную, удобную систему входа в систему. Например, если вы чувствуете, что их учетные данные устарели в зависимости от времени, то заставьте их снова войти в систему. Вы можете сделать это, проверив учетные данные в onCreate(), и, если они устарели, позвоните по номеру startActivity(), чтобы запустить свое действие по входу в систему (или открыть диалоговое окно входа в систему, или любой другой способ входа в них).

Конечно, еще лучший подход - полностью пропустить вход в систему. Если это не «безопасный пароль», банковское приложение или что-то еще, что требует безопасности выше среднего, вам не нужно, чтобы они входили в систему, и ваши пользователи будут раздражены, если они почувствуют, что ваши требования для входа в систему не нужны. Большинство мобильных приложений не требуют аутентификации.

Принудительный вход в систему в зависимости от того, как они достигли активности, является враждебным для пользователя. Вы говорите пользователям, которые соизволят использовать свои телефоны для других целей, кроме вашего приложения, что они граждане второго сорта.

2 голосов
/ 05 января 2012

просто создайте активность пня, которая не имеет представления содержимого и запускает другие действия при запуске приложения

например, добавьте в onCreate следующее:

Class<?> myclass;

if(isTimeForActivity1){
    myclass = Activity1.class;
}else if(isTimeForActivity2){
    myclass = Activity2.class;
}

startActivity(new Intent(this, myclass));
finish();
0 голосов
/ 30 марта 2011

Попробуйте взглянуть на приложение "OI Safe", у которого есть хорошо разработанное решение (я не знаю, хорошо ли разработан код, но вы посмотрите: p)

...