2010-07-31 10 views
16

Uygulamamda, özel bir şey olursa kullanıcıya bildirimleri bildiriyorum:Android: Bir Bildirim çağrısına tıklamanın nasıl önceleri onCreate()

public void triggerNotification(String msg) { 
     notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
     Intent contentIntent = new Intent(this, ABC.class); 
     Notification notification = new Notification(R.drawable.icon, msg, System.currentTimeMillis()); 
     notification.setLatestEventInfo(this, "ABC", msg, PendingIntent.getActivity(this.getBaseContext(), 0, contentIntent, PendingIntent.FLAG_CANCEL_CURRENT)); 
     notification.flags = Notification.FLAG_AUTO_CANCEL; 
     notificationManager.notify(notificationCounter, notification); 
     notificationCounter++; 
} 

Kullanıcı Bildirim'i tıklatırsa, onCreate() yöntemi çağrılır. Ancak, uygulamasındaki belirli bir yöntemin kullanılmasını isterim veya uygulama ön planda değilse, ön plana geri getirilir.

Bildirimlerin nasıl ele alınacağını açıklayan birçok öğretici olduğunu biliyorum, ancak bunları tamamen anlamadım ve istediğim gibi uygulayamadım.

cevap

15

zaten çalışıyorsa size niyet farklı bayrakları ayarlamak gerekir ön plana uygulamanızı getirmek Uygulamanız için hangi yöntemin kullanılacağına karar verir.

+0

teşekkür taşınır. Bu işe yarıyor. – RoflcoptrException

+0

Evet, niyetim için birazdan fazla verdim. Fakat bu ekstra bilgiyi nereden alabilirim? Sürümünüzün ardından, onCreate() çağrılmıyor. – RoflcoptrException

+3

Tamam Cevabını buldum: Activity # onNewIntent (Intent intent) denir. – RoflcoptrException

5

FLAG_ACTIVITY_CLEAR_TOP ve FLAG_ACTIVITY_SINGLE_TOP kullanma önerileri sorunu kısmen çözüyor. Android manifest'indeki etkinlik de bu ayarları uygulamalıdır. Böylece, ana ekrandan etkinliğin başlatılması aynı davranıştır. Bu özellikler olmadan, etkinliğin birden çok örneği başlatılabilir. Eğer Intent contentIntent = new Intent(this, ABC.class); kullanırsam keşfettim

<activity android:name="foo" 
      android:clearTaskOnLaunch="true" 
      android:launchMode="singleTop" 
      android:label="@string/app_name"> 
+0

Bana göre stealthcopter tarafından sağlanan çözüm bu satırları eklemeden işe yaramıyor ... –

0

bu bakılmaksızın belirlenen bayrakları onCreate(); çağırır.

Kullanım Intent contentIntent = getIntent();onCreate(); atlamak için ve o onStart();

İlgili konular