Подтвердить что ты не робот

Android - обнаружение запуска приложения из дома или истории

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

Что насчет

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

? Это использует простой флаг Intent.

Ответ 3

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

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

Class<?> myclass;

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

startActivity(new Intent(this, myclass));
finish();

Ответ 4

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