1

リストを表示する MainActivity があります。しかし、ユーザーがステータス バーの通知をクリックすると、MainActivity の上にダイアログを表示したいと考えています。アクティビティが通知を通じて開始されたかどうかを照会することは可能ですか?

また、そのダイアログをポップアップする必要があることをアクティビティに知らせるために、インテントに追加情報を追加しようとしました。ただし、バンドルは常に null です。これを 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");
    }
}
4

1 に答える 1

2

resultIntent にフラグ FLAG_ACTIVITY_SINGLE_TOP を設定し、MainActivity にメソッド onNewIntent() を実装してみてください

于 2013-06-01T05:17:20.437 に答える