C2DM aracılığıyla gönderilen ve uygulamanızda alınan bir bildirim oluşturduğumda, C2DM'den gelen push bildirimi ile gelen bazı verileri aktarmak istiyorum. niyet ekstraları. Bu, bildirimi ilk açtığımda iyi çalışıyor. Daha sonra veriler, etkinliğin durumuna bağlı olarak onNewIntent veya onCreate ile alınır.Android Durum Çubuğu Bildirimleri - Eski ekstraları ikinci defa alma niyeti
Ancak, C2DM üzerinden ikinci bir itme bildirimi gönderirseniz, yeni verilerle doğru şekilde alınır, ancak eklerden alma geldiğinde, hala önceki iletiden veri alırım. Görmek istediğim başlık ve veriler bildirimde doğru şekilde gösteriliyor. Yani bir şey benim amacım yanlış olmalı. Bu, etkinlik çalışıyorsa ve değilse de olur.
aşağıdaki yapmam bildirimi oluşturmak için:
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.ic_stat_notify_push, "Message received", System.currentTimeMillis());
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
notification.defaults |= Notification.DEFAULT_LIGHTS;
Intent intent = new Intent(context, DesktopApp.class);
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("msg_id", msg_id);
intent.putExtra("title", title);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
notification.setLatestEventInfo(context, "New message", title + String.valueOf(msg_id), pendingIntent);
notificationManager.notify(0, notification);
sonra amaçları okumak için:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent myIntent = getIntent(); // this is just for example purpose
int i = myIntent.getIntExtra("msg_id", -1);
if (i != -1) Toast.makeText(this, "Got message! " + String.valueOf(i), Toast.LENGTH_LONG).show();
}
@Override
public void onNewIntent(Intent intent){
super.onNewIntent(intent);
Bundle extras = intent.getExtras();
if (extras != null) {
int i = extras.getInt("msg_id", -1);
if (i != -1) Toast.makeText(this, "Got message! " + String.valueOf(i), Toast.LENGTH_LONG).show();
}
}
herhangi bir öneriniz?
teşekkürler onNewIntent() yöntemi sorunumu çözmek :) – SAndroidD