我正在编写android messenger。当应用程序最小化并且某些联系人写信给我时,会成功通知通知。如果两个联系人写入,则每个消息显示在不同的框中。
所以我需要放置然后获取联系人ID ..
这是我在应用程序中的代码,从那里抛出通知:
private void showNotification(Message m) {
Contact temp = dbHelper.getContact(m.getPersonID());
Intent notificationIntent = new Intent(getApplicationContext(), ChatActivity.class);
notificationIntent.putExtra("prsID", m.getPersonID());
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
Notification.Builder builder = new Notification.Builder(this);
builder.setTicker("Messenger: New Message");
builder.setContentTitle(temp.getName());
builder.setContentText(m.getMessage());
builder.setSmallIcon(R.drawable.ic_launcher);
if (temp.hasImage()){
Bitmap bmp = BitmapFactory.decodeByteArray(temp.getImageByteArr(), 0, temp.getImageByteArr().length);
builder.setLargeIcon(bmp);
}
Notification noti = builder.setContentIntent(pIntent).build();
noti.flags = Notification.FLAG_AUTO_CANCEL;
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(temp.getId(), noti);
}
这是ChatActivity中的代码,我正在尝试检索联系人ID:
@Override
protected void onResume() {
super.onResume();
if (this.guest != null){
int prsid = getIntent().getIntExtra("prsID", -1);
if (prsid != -1){
this.guest = this.messageLoader.getContact(prsid);
ContactForChat.getInstance().setContact(this.guest.getId());
} else {
this.guest = this.messageLoader.getContact(this.guest.getId());
ContactForChat.getInstance().setCurrentID(this.guest.getId());
}
this.guest.setNewMessage(false);
this.messageLoader.updateContact(guest);
}
if (this.messageLoader != null)
this.messageLoader.chatOnPause(false);
}
但是int prsid = getIntent()。getIntExtra(“prsID”, - 1);总是返回-1
任何人都可以帮助我吗?怎么做得对? 提前谢谢你
更新
实际上,我猜getIntent()返回null:
解
在ChatActivity中我必须覆盖一个方法(两个,a和ab都有正确的值):@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Bundle a = intent.getExtras();
int ab = a.getInt("prsID");
int b = intent.getIntExtra("prsID", -1);
}
答案 0 :(得分:1)
我会采取刺戳并猜测m.getPersonID()
返回长而不是int?所以你需要使用getIntent().getLongExtra("prsID", -1);
答案 1 :(得分:0)
在showNotification
方法中,制作第一个空白行Log.v("NOTIFICATION", "id = " + m.getPersonID());
并确保在将其添加到附加内容时实际设置为-1以外的其他内容。此外,请确保m.getPersonID()
的返回类型为int
,而不是long
,double
或其他一些数字。
答案 2 :(得分:-1)
要区分通知,您可以
您可以使用此
mManager.notify(0, notification); to mManager.notify((int) when, notification);
,其中
long when = System.currentTimeMillis();