2015-06-25 67 views
0

我有我的應用程序的通知,我想,當我在通知自來水如何什麼都不做:Android的 - 當通知應用程序和應用程序水龍頭已經打開

  • 如果應用程序被打開:沒做什麼;
  • 如果應用程序已關閉:打開應用程序;

當前代碼:

Intent intent = new Intent(); 
intent.setClass(mContext, MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
PendingIntent contentIntent = PendingIntent.getActivity(mContext, 0, intent, 
    PendingIntent.FLAG_UPDATE_CURRENT); 

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext); 
mBuilder.setSmallIcon(icon); 
mBuilder.setContentTitle(string); 
mBuilder.setWhen(System.currentTimeMillis()); 
mBuilder.setOngoing(true); 
mBuilder.setContentIntent(contentIntent); 
mBuilder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC); 
mBuilder.setColor(mContext.getResources().getColor(R.color.theme_color)); 

Notification notification = mBuilder.build(); 
mNotificationMgr.notify(id, notification); 

活動清單:

<activity 
    android:name=".MainActivity" 
    android:configChanges="keyboardHidden|orientation|mcc|mnc" 
    android:launchMode="singleTop" 
    android:screenOrientation="portrait" 
    android:label="@string/app_name" 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
</activity> 

如果我點擊的通知和應用程序已經打開,它會打開另一個應用程序在自己的應用程序的面前! 如果應用程序已關閉,則一切正常!

回答

0

這可以通過增加對您的活動launchMode在manifest.xml例如

<activity android:launchMode = "singleTop" ../> 

這裏做的是一個細節example

+0

我編輯了我的問題並添加了清單代碼,你可以看看並給我正確的方法嗎?謝謝 –

+0

@DouglasFornaro是否有效? – Kartheek

+0

我已經使用singleTop –

0

我會替換該行:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 

使用以下內容:

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

從文檔:

公共靜態最終詮釋FLAG_ACTIVITY_SINGLE_TOP

如果設置,活動將不會被它是否已經在歷史堆棧的頂部運行啓動。


公共靜態最終詮釋FLAG_ACTIVITY_REORDER_TO_FRONT

如果傳遞給Context.startActivity()的意圖設置,這個標誌將 導致啓動的活動被帶到前面它的任務 歷史堆棧,如果它已經在運行。例如,考慮一個由四個活動組成的任務:A,B,C, D.如果D調用startActivity()和一個解析爲活動B的 組件的Intent,則B將被帶入該組件 歷史堆棧的前面,結果爲:A,C,D,B。如果還指定了FLAG_ACTIVITY_CLEAR_TOP,則將忽略此標誌 。

SINGLET_TOP將阻止您的活動再次啓動,並且REORDER_TO_FRONT阻止它被重新創建。希望能幫助到你。

+0

同樣的問題呢...... –

+0

如何將清單中的launchMode替換爲singleTask? –

+0

同樣的,但... –

相關問題