Android:通过 ContentIntent 传输数据
Android: Transferring Data via ContentIntent
我的 Android 申请有问题。它通过 Google 云消息接收消息并在通知栏中显示通知。我想通过通知传输一些数据。此数据来自 Google 云消息传递,应附加到通知中。
这是我显示通知的代码:
private void setNotification(String strTitle, String strMessage, int intPageId, int intCategorieId)
{
notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
Intent intentOpen = new Intent(this, NotificationClick.class);
intentOpen.putExtra("pageId", Integer.toString(intPageId));
intentOpen.putExtra("categorieId", Integer.toString(intCategorieId));
intentOpen.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intentOpen, 0);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.launcher_icon)
.setTicker(strTitle)
.setContentTitle(strTitle)
.setStyle(new NotificationCompat.BigTextStyle().bigText(strMessage))
.setContentText(strMessage);
notificationBuilder.setContentIntent(contentIntent);
notificationBuilder.setDefaults(Notification.DEFAULT_ALL);
notificationManager.notify(intCategorieId, notificationBuilder.build());
}
我的代码在另一个 Activity 中获取变量 "intPageId" 和 "intCategorieId"( 通过单击通知打开)返回,是这样的:
Bundle intentExtras = new Bundle();
intentExtras = getIntent().getExtras();
Toast.makeText(this, "Page To Open: " + intentExtras.getString("pageId"), Toast.LENGTH_LONG).show();
Toast.makeText(this, "Page To Open: " + intentExtras.getString("kategorieId"), Toast.LENGTH_LONG).show();
但是在两个"Toast"消息中都出现了"null",还是第一次传过来的值,点击Message。
例如:
我第一次发送:intPageId=1。
吐司说:"Page To Open: 1".
第二次发送:intPageId=2。
吐司说:"Page To Open: 1".
我完全糊涂了。
第一种方法:
而不是下面一行:
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intentOpen, 0);
改成这样:
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intentOpen, PendingIntent.FLAG_UPDATE_CURRENT);
第二种方法:
int iUniqueId = (int) (System.currentTimeMillis() & 0xfffffff);
PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(),iUniqueId, intentForNotification, 0);
我的 Android 申请有问题。它通过 Google 云消息接收消息并在通知栏中显示通知。我想通过通知传输一些数据。此数据来自 Google 云消息传递,应附加到通知中。
这是我显示通知的代码:
private void setNotification(String strTitle, String strMessage, int intPageId, int intCategorieId)
{
notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
Intent intentOpen = new Intent(this, NotificationClick.class);
intentOpen.putExtra("pageId", Integer.toString(intPageId));
intentOpen.putExtra("categorieId", Integer.toString(intCategorieId));
intentOpen.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intentOpen, 0);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.launcher_icon)
.setTicker(strTitle)
.setContentTitle(strTitle)
.setStyle(new NotificationCompat.BigTextStyle().bigText(strMessage))
.setContentText(strMessage);
notificationBuilder.setContentIntent(contentIntent);
notificationBuilder.setDefaults(Notification.DEFAULT_ALL);
notificationManager.notify(intCategorieId, notificationBuilder.build());
}
我的代码在另一个 Activity 中获取变量 "intPageId" 和 "intCategorieId"( 通过单击通知打开)返回,是这样的:
Bundle intentExtras = new Bundle();
intentExtras = getIntent().getExtras();
Toast.makeText(this, "Page To Open: " + intentExtras.getString("pageId"), Toast.LENGTH_LONG).show();
Toast.makeText(this, "Page To Open: " + intentExtras.getString("kategorieId"), Toast.LENGTH_LONG).show();
但是在两个"Toast"消息中都出现了"null",还是第一次传过来的值,点击Message。
例如: 我第一次发送:intPageId=1。 吐司说:"Page To Open: 1".
第二次发送:intPageId=2。 吐司说:"Page To Open: 1".
我完全糊涂了。
第一种方法:
而不是下面一行:
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intentOpen, 0);
改成这样:
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intentOpen, PendingIntent.FLAG_UPDATE_CURRENT);
第二种方法:
int iUniqueId = (int) (System.currentTimeMillis() & 0xfffffff);
PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(),iUniqueId, intentForNotification, 0);