1

我目前面臨爲兩個不同的活動設置待處理通知的問題。爲未決通知的意圖設置不同的活動

我有一個ParentActivity和一個ChildActivity。我想在通知點擊時打開ChildActivity,如果它當前正在運行或暫停,則啓動ParentActivity。

我嘗試這樣做:

......... 

    Intent resultIntent = new Intent(this, ChildActivity.class); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
    stackBuilder.addParentStack(ParentActivity.class); 
    stackBuilder.addNextIntent(resultIntent); 
    PendingIntent resultPendingIntent = 
      stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
    ............. 

上面沒有爲我工作。 ChildActivity每次開始通知點擊。

而且當Faruk回答時,我不想要這個。通過檢查ChildActivity的當前狀態來創建通知的未決意圖將不起作用。 假設在ChildActivity運行時創建通知,但在創建通知後,用戶殺死了該應用程序。因此,殺死應用程序後,如果用戶點擊通知,ChildActivity將開始。我不想那樣。我想如果ChildActivity未運行或暫停,則應啓動ParentActivity。

我該如何做到這一點? 請幫忙。

+0

請發佈您的代碼.. @ Sar – Joy

+0

試試這個: - PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(contex,0,resultIntent,PendingIntent.FLAG_UPDATE_CURRENT); – Joy

回答

0

讓你的Notification推出一個簡單的調度Activity。這Activity並在onCreate()如下:

super.onCreate(...); 
if (ChildActivity.running) { 
    // ChildActivity is running, so redirect to it 
    Intent childIntent = new Intent(this, ChildActivity.class); 
    // Add necessary flags, maybe FLAG_ACTIVITY_CLEAR_TOP, it depends what the rest of your app looks like 
    childIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    startActivity(childIntent); 
} else { 
    // Child is not running, so redirect to parent 
    Intent parentIntent = new Intent(this, ParentIntent.class); 
    // Add necessary flags, maybe FLAG_ACTIVITY_CLEAR_TOP, it depends what the rest of your app looks like 
    parentIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    startActivity(parentIntent); 
} 
finish(); 

ChildActivity做到這一點:

public static boolean running; // Set when this Activity is active 

ChildActivity.onCreate()補充一點:

running = true; 

ChildActivity.onDestroy()補充一點:

running = false; 
+1

這個技巧對我有用。謝謝! – Sar

0

雖然可能有幾種方法來實現這一點,但以下是我能想到的。

首先,你應該得到ChildActivity是否處於活動狀態,通過此鏈接

Check whether activity is active

這些信息存儲在一些變量childActive,那麼你就可以初始化不同notificationIntents檢查,而無需使用任務TaskStackBuilder值。

例如;

Intent notificationIntent = null; 
if(childActive) 
    notificationIntent = new Intent(context, ChildActivity.class); 
else 
    notificationIntent = new Intent(context, ParentActivity.class); 

PendingIntent contentIntent = PendingIntent.getActivity(context, 
       0, notificationIntent, 
       PendingIntent.FLAG_CANCEL_CURRENT); 
+0

感謝您的回覆Faruk。但是這種方式存在問題。假設在ChildActivity運行時創建通知,但創建通知後,用戶殺死了該應用程序。因此,殺死應用程序後,如果用戶將點擊通知,然後ChildActivity將開始。 我不想那樣。我希望如果ChildActivity未運行或暫停,那麼應啓動PArentActivity。 – Sar