2016-07-23 12 views
1

面白い画像を表示し、FunnyActivityという名前のアクティビティがあるとします。このアクティビティは、MainActivityから起動することができます。MainActivityは、ボタンをクリックした後、アウトアプリケーションの基本アクティビティです。私たちはまた、いくつかの通知をプッシュしたいと思います。ユーザーが通知をクリックすると、このFunnyActivityが起動されます。だから我々は、コードのこの部分を追加します。通知からアプリケーションを開く

Intent notificationIntent = new Intent(this, FunnyActivity.class); 
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

    PendingIntent intent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), notificationIntent, 0); 

と、このPendingIntentを通知ビルダーでコースFunnyActivityの

setContentIntent(intent) 

を使用しているが、美しく起動されますが、我々は、ユーザーがFunnyActivity上のボタンを背面クリックしたときにMainActivityを開きたいです。

どうすれば実現できますか? MainActivityに戻ると、ボタンからFunnyActivityを再び開くことができます。

// Intent for the activity to open when user selects the notification 
Intent detailsIntent = new Intent(this, DetailsActivity.class); 

// Use TaskStackBuilder to build the back stack and get the PendingIntent 
PendingIntent pendingIntent = 
     TaskStackBuilder.create(this) 
         // add all of DetailsActivity's parents to the stack, 
         // followed by DetailsActivity itself 
         .addNextIntentWithParentStack(upIntent) 
         .addNextIntent(detailsIntent); 
         .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 

NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
builder.setContentIntent(pendingIntent); 

出典:

TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
Intent resultIntent = new Intent(this, FunnyActivity.class); 

        // Adds the back stack 
        stackBuilder.addParentStack(MainActivity.class); 
        // Adds the Intent to the top of the stack 
        stackBuilder.addNextIntent(resultIntent); 

Intent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 

        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)/*.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))*/ 
          .setSmallIcon(R.mipmap.ic_launcher) 
          .setContentTitle(title) 
          .setContentText(msg) 
          .setContentIntent(resultPendingIntent) 
          .setAutoCancel(true); 

これはあなたの問題を解決を図ることができる方法である:Create back stack when starting the activity

+0

標準的な解決策がわかりませんが、これはハックのように聞こえるかもしれませんが、FunnyActivityのonBackPressed()をオーバーライドし、そこに適切なフラグを付けてMainActivityを起動してください。 – Shaishav

答えて

4

はこれを試してみてください。これは役に立ちます。

+0

右のように見えます!しかし、詳細の使用はどこですか? – ThirdMartian

+0

@ThirdMartian .addNextIntentWithParentStack(upIntent) – shantanu

+0

@ThirdMartian回答を更新しました。また、 'upIntent'は、バックプレスで開くMainActivityのインテントです。 – shantanu

0

あなたはこれを試すことができ

関連する問題