2013-06-01 120 views
1

我有一个显示列表的MainActivity。但是当用户点击状态栏中的通知时,我想在MainActivity上显示一个对话框。 是否可以查询活动是否通过通知开始?如何知道点击通知后是否打开了活动?

我也尝试添加额外的信息意图让活动知道它应该弹出该对话框。但捆绑总是空的。添加到onResume()没有意义,因为Activity已经可见。

long id = intent.getLongExtra("id", 0); 
    String title = intent.getStringExtra("msg"); 

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context); 
    mBuilder.setSmallIcon(R.drawable.ic_action_ic_action_edit); 
    mBuilder.setContentTitle("EasyReminder"); 
    mBuilder.setContentText(title); 
    Intent resultIntent = new Intent(context, MainActivity.class); 
    resultIntent.setAction(Intent.ACTION_MAIN); 
    resultIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
    resultIntent.putExtra("ShowDialog", true); 

    PendingIntent pi = PendingIntent.getActivity(context, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
    mBuilder.setContentIntent(pi); 
    NotificationManager mNotificationManager = 
      (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 

    mNotificationManager.notify((int)id, mBuilder.build()); 

MainActivity.java

@Override 
public void onResume() { 
    super.onResume(); 
    // this is always null 
    Bundle extras = getIntent().getExtras(); 
    if(extras != null) { 
     DialogPopupFragment fr = new DialogPopupFragment(); 
     fr.show(getFragmentManager(), "DialogPopupFragment"); 
    } 
} 
+1

http://developer.android.com/training/basics /activity-lifecycle/starting.html。你可以通过活动生命周期回调方法知道 – Raghunandan

回答

2

尝试在MainActivity上设置resultIntent标志FLAG_ACTIVITY_SINGLE_TOP,和实施方法 onNewIntent()

+0

谢谢,这工作! – user2246120