2015-04-20 159 views
2

我創建了一個帶有通知的警報,但是當我通過通知打開MainActivity時,另一個MainActivity打開了前一個MainActivity,如果關閉MainActivity,則會有另一個MainActivity。打開活動已從通知打開

這是我的廣播接收器的代碼:

@Override 
    public void onReceive(Context context, Intent intent) 
    { 

     Intent notificationIntent = new Intent(context, MainActivity.class); 
     PendingIntent contentIntent = PendingIntent.getActivity(context, 
         0, notificationIntent, 
         PendingIntent.FLAG_CANCEL_CURRENT); 

     NotificationCompat.Builder mBuilder = 
        new NotificationCompat.Builder(context); 
     mBuilder.setContentIntent(contentIntent) 
        .setSmallIcon(R.drawable.ic_launcher) 
        .setContentTitle("E' ora di colazione!") 
        .setContentText("Cosa c'è per colazione?") 
        .setAutoCancel(true); 


       NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
       mNotificationManager.notify(1, mBuilder.build()); 


    } 

} 
+0

你想只保留一個活動的解決方案? –

+0

您是否在Manifest中嘗試過android:launchMode =「singleTop」或android:launchMode =「singleInstance」? –

+0

@NoName yes只是一個活動 – Slaiv206

回答

0

更新你的意圖創建代碼

添加以下標誌的意圖FLAG_ACTIVITY_REORDER_TO_FRONT

Intent notificationIntent = new Intent(context, MainActivity.class); 
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
0

添加此機器人:launchMode = 「singleTask」在您的活動標籤Menifest.xml

@Override onNewIntent在你的Activity類中。

您的課程將在onNewIntent()中獲得新意圖並繼續進行任何您想要的操作。

@Override 
    protected void onNewIntent(Intent intent) { 

     super.onNewIntent(intent); 
    } 
+0

它的工作原理,但在我的應用程序中有一點我稱之爲一個新的Intent:'Intent myIntent = new Intent getActivity(),MainActivity.class); \t getActivity()。startActivity(myIntent); \t getActivity()。finish();'在這一點上我的應用崩潰 – Slaiv206

+0

哪個錯誤? ? –

0

我已經發現使用notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

@Override 
    public void onReceive(Context context, Intent intent) 
    { 

     Intent notificationIntent = new Intent(context, MainActivity.class); 
     notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     PendingIntent contentIntent = PendingIntent.getActivity(context, 
         0, notificationIntent, 
         PendingIntent.FLAG_CANCEL_CURRENT); 

     NotificationCompat.Builder mBuilder = 
        new NotificationCompat.Builder(context); 
     mBuilder.setContentIntent(contentIntent) 
        .setSmallIcon(R.drawable.ic_launcher) 
        .setContentTitle("E' ora di colazione!") 
        .setContentText("Cosa c'è per colazione?") 
        .setAutoCancel(true); 


       NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
       mNotificationManager.notify(1, mBuilder.build()); 


    }