2014-02-25 75 views
0

我使用以下代碼將圖標添加到通知狀態,用戶可以單擊圖標打開應用程序ui.SMSMain.class,並且兩個ui.SMSMain.class應用程序將會如果用戶點擊兩次圖標,則會打開。 我希望應用程序只能打開一次,我該怎麼辦?如何防止應用程序打開重複

private static void ShowNotification() {   
     NotificationManager notificationManager = (NotificationManager) myContext.getSystemService(android.content.Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(R.drawable.smsforward, 
            myContext.getString(R.string.app_name), 
            System.currentTimeMillis()); 

    notification.flags |= Notification.FLAG_ONGOING_EVENT; 
    notification.flags |= Notification.FLAG_NO_CLEAR; 
    CharSequence contentTitle =myContext.getString(R.string.NotificationTitle); 
    CharSequence contentText = myContext.getString(R.string.NotificationContent); 

    Intent notificationIntent = new Intent(myContext, ui.SMSMain.class); 
    PendingIntent contentItent = PendingIntent.getActivity(myContext, 0, 
      notificationIntent, 0); 

    notification.setLatestEventInfo(myContext, contentTitle, contentText,contentItent); 
    notificationManager.notify(NotificationID, notification); 
} 
+0

您是否定義了目標活動的launch mide single_top? – Devrim

回答

1

附加launchMode屬性的活動中表現爲SingleTop

<activity 
     android:name="Tracking" 
     android:label="@string/app_name" 
     android:launchMode="singleTop"> 
     .... 

這將只允許一個活動的情況下,也最好是在你的PendingIntent

PendingIntent contentItent = PendingIntent.getActivity(myContext, 0, 
     notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
使用標誌 PendingIntent.FLAG_UPDATE_CURRENT

雖然,我不確定是否0實際引用UPDATE_CURRENT

更新

您可能需要根據自己的需要singleTop或者singleTask中進行選擇

爲singleTop:如果活動的實例已經存在於當前任務和系統路線的意圖本次活動的頂部,將不會創建新的實例

for singleTask:總是會創建一個新任務,並將新實例作爲根目錄推送到該任務。但是,如果任何活動實例存在於任何任務中,則系統通過onNewIntent()方法調用將意圖路由到該活動實例。

更多關於LaunchMode的information

我相信singleTop更適合您的問題。

+1

聽起來更像是他的描述中的一組任務的主要類,所以我可能甚至會考慮singleTask – Guardanis

+0

感謝分享,但是我認爲從我所瞭解的他想要重定向到打開的活動而不啓動新活動,所以我認爲singleTop。 – Coderji

相關問題