-1

通知の意図に関していくつか問題がありました。2 つのアクティビティ (A & B) があります。アクティビティ A は、アプリケーションのメイン アクティビティです。ユーザーが通過する最初のアクティビティ。アクティビティ B は、ユーザーがアクティビティ A のボタンをクリックして入力したときです。

通知をクリックすると、アクティビティ B に移動します。その後、アクティビティ A onBackPressed に戻ります。しかし、アプリケーションを閉じて、マルチタスク オプションを使用して再度開くと、アクティビティ B でアプリケーションが再開されます。アプリケーションを閉じた後ではなく、アクティビティ A で開始するようにしたかったのです。

順序は

アクティビティ A --> アクティビティ B。

通知onClick -> アクティビティ B ( onBackPressed ) -> アクティビティ A --> 閉じる。

アプリを再度開く / マルチタスク機能で開く --> アクティビティ A

私の質問を適切に理解するために提供できる他の情報があれば教えてください。

GCM_Intent.class

    Notification note = new Notification(icon, msgTopic ,System.currentTimeMillis());
    Intent i=new Intent(this, Activity_B.class);
    i.putExtra("topicId", topicId);
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|
    Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent pi=PendingIntent.getActivity(this, CommunitiesappConstant.NOTIFICATION_ID, i,  PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_ONE_SHOT);
    note.setLatestEventInfo(this, topicName ,msgInfo+message, pi);
    note.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;
    note.ledARGB |= 0xff0000ff;
    note.ledOffMS |= 1000;
    note.ledOnMS |= 300;


    mgr.notify(CommunitiesappConstant.NOTIFICATION_ID, note);

活動Bクラス

@Override
public void onCreate(Bundle savedInstanceState){

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_b);
    Bundle bundle = getIntent().getExtras();
    topicId = bundle.getString("topicId");

}

@Override
public void onBackPressed() {
    super.onBackPressed();
    Log.e(TAG,  "onBackPressed");
    Intent i = new Intent(Activity_B.this, Activity_A.class);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);
    finish();
}
4

2 に答える 2

1

通知は、アプリケーションの通常の UI の外でユーザーに表示できるメッセージです。これは、通知を使用するのに最適なコードです。

NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!");
// Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(this, ResultActivity.class);

// The stack builder object will contain an artificial back stack for the
// started Activity.
// This ensures that navigating backward from the Activity leads out of
// your application to the Home screen.
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(ResultActivity.class);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
        stackBuilder.getPendingIntent(
            0,
            PendingIntent.FLAG_UPDATE_CURRENT
        );
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =
    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// mId allows you to update the notification later on.
mNotificationManager.notify(mId, mBuilder.build());
于 2013-10-08T04:16:35.140 に答える
0

この onback pressed() のように、

Activity current = getLocalActivityManager().getActivity(mIdList.get(length-1));
        current.finish()
于 2013-10-08T05:23:26.790 に答える