Android OneSignal — вывести приложение на передний план после нажатия на уведомление

Я использую OneSignal для уведомлений Android. Я могу получить уведомление и начать действие в моем собственном NotificationOpenedHandler():

String code = payload.additionalData.getString(Cons.KEY_CODE);
if(code.equalsIgnoreCase(Cons.NOTIFICATION_DETAIL_SCREEN)) {
    Intent intent = new Intent(getApplicationContext(), DetailActivity.class);
    startActivity(intent);
}

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

Я также отключил пусковую установку по умолчанию в своем манифесте:

<meta-data android:name="com.onesignal.NotificationOpened.DEFAULT" android:value="DISABLE" />

Кто-нибудь знает, почему мое приложение не выводится на передний план?


person jwBurnside    schedule 27.03.2017    source источник
comment
попробуйте установить соответствующие флаги с намерением. Я использую намерение.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); и это работает для меня   -  person Gautam    schedule 27.03.2017
comment
Кажется, не работает в моем случае. Уведомление отклонено, но мое приложение не отображается на переднем плане.   -  person jwBurnside    schedule 27.03.2017
comment
Является ли DetailActivity вашей активностью запуска? или это класс в вашем приложении?   -  person Gautam    schedule 27.03.2017
comment
Подробная активность — это не мой лаунчер, это класс в моем приложении.   -  person jwBurnside    schedule 27.03.2017
comment
даже я использую OneSignal, но я использую схему глубоких ссылок, чтобы открывать свои действия. Вы можете попробовать, и вызову startActivity должен предшествовать контекст, которого нет в указанном вами коде. Вы тоже можете попробовать это, например, getApplicationContext().startActivity(intent); без этого startActivity не будет разрешена.   -  person Gautam    schedule 27.03.2017
comment
Круто, что сработало. Если вы хотите бросить это в ответ, я отдам вам должное.   -  person jwBurnside    schedule 27.03.2017


Ответы (2)


  1. Попробуйте установить соответствующие флаги с намерением intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
  2. Вызову StartActivity должен предшествовать контекст, которого нет в указанном вами коде. Вы тоже можете попробовать это - т.е. getApplicationContext().startActivity(intent); без этого startActivity не будет разрешено
person Gautam    schedule 27.03.2017

Вам нужно указать это в своем намерении перед началом действия:

намерение.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

Затем приступайте к деятельности.

person Mauricio Domenech    schedule 27.03.2017
comment
Нет, в моем случае это не работает. Уведомление отклонено, и мое приложение не отображается на переднем плане. - person jwBurnside; 27.03.2017