4

Я сейчас участвую в обучении работе с уведомлениями Phonegap на Android. В то время как экран будет выведено уведомление, как представляется, довольно простой процессПриложение Android Phonegap - Приведение деятельности на передний план

public void triggerTestNotification(String tag, int id,Context ctxt) 
{ 
    Intent notificationIntent = new Intent(context, PallActivity.class); 
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
    Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    notificationIntent.setAction(Intent.ACTION_MAIN); 
    notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

    PendingIntent contentIntent = PendingIntent.getActivity(ctxt, 0, 
    notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

    Notification not = new Notification.Builder(ctxt) 
    .setContentTitle("Title").setContentText("Title") 
    .setTicker("Tick tock") 
    .setAutoCancel(true) 
    .setContentIntent(contentIntent) 
    .setSmallIcon(ctxt.getApplicationInfo().icon).build(); 
    NotificationManager notificationManager = (NotificationManager)  
    ctxt.getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(tag, id, not); 
} 

, что я нашел гораздо более сложным является следующая

  • Пользователь запускает приложение уже
  • пользователь уходит и начинает делать что-то else - приложение обращено в исходное положение
  • Получено уведомление
  • Отображается:
  • Пользователь нажимает на уведомление.

На этом этапе приложение должно вернуться на передний план. Я думал, что мой код намерения

public class PallActivity extends Activity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    finish(); 
    forceMainActivityReload(); 
} 

private void forceMainActivityReload() 
{ 
    PackageManager pm = getPackageManager(); 
    Intent launchIntent =  
    pm.getLaunchIntentForPackage(getApplicationContext().getPackageName());   
    startActivity(launchIntent); 
} 

@Override 
protected void onResume() 
{ 
    super.onResume(); 
    final NotificationManager notificationManager = (NotificationManager) 
    this.getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.cancelAll(); 
} 

} 

будет иметь дело с этим, но он ничего не делает. Понятно, что у меня здесь что-то не так - возможно, в флагах Intent. Я был бы очень обязан всем, кто мог бы поместить меня на правильную дорогу

+0

почему вы звоните '' finish' в onCreate'? –

+0

Я поместил 'finish()' там, потому что видел его в другом плагине. Тем не менее, я пробовал свой код с 'finish()' перемещался в нижней части 'onCreate', а также удалял все вместе.Приложение по-прежнему не возвращается на передний план. – DroidOS

+1

И можете ли вы сказать, какова цель деятельности Pall - я имею в виду, что она сразу же перенаправляется на активность запуска вашего приложения. Разве это не 'PallActivity' ваша активность запуска? Можете ли вы включить свой манифест? –

ответ

2

Удалите finish(); со своего источника, он будет называть финиш, прежде чем вы начнете двигаться в любом месте.

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

notification.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR; 
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

Убедитесь, что контекст вы используете:

Context context = getApplicationContext(); 

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

notificationIntent.setAction(Intent.ACTION_MAIN); 
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

Вот множество более подробно, если требуется:

Resume an activity when clicked on a notification

Android: How to resume an App from a Notification?

resuming an activity from a notification

Notification Resume Activity

Intent to resume a previously paused activity (Called from a Notification)

Android: resume app from previous position

How to make notification intent resume rather than making a new intent?

+1

Спасибо, Yvette - диапазон полезных ссылок, которые вы предоставили, особенно ценится. – DroidOS

Смежные вопросы