activity 中的旧意图从通知开始
Old intent in activity started from notification
我正在创建这样的意图
val tapIntent = Intent(context, TaskActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val id = createID()
tapIntent.putExtra("timestamp", currentTime)
val notificationIntent: PendingIntent = PendingIntent.getActivity(context, 0, tapIntent, 0)
val builder = NotificationCompat.Builder(context, "com.task")
.setSmallIcon(R.drawable.ic_android_black_24dp)
.setContentTitle(context.resources.getString(R.string.new_task_available))
.setContentIntent(notificationIntent)
.setAutoCancel(true)
.setPriority(NotificationCompat.PRIORITY_MAX)
with(NotificationManagerCompat.from(context)) {
notify(id, builder.build())
}
此通知每天生成几次。
在测试它时,我发现如果我没有关闭 activity,只是从中滑出,下次我从 intent 打开这个 activity 时,我会看到 intent 存储时间戳以前的通知,而不是当前的通知。
从intent中读取数据的代码非常简单:
val timestamp = intent.getLongExtra("timestamp", System.currentTimeMillis())
val hourFormatter = SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.getDefault())
Toast.makeText(this, hourFormatter.format(Date(timestamp)), LENGTH_LONG).show()
据我了解 Intent.FLAG_ACTIVITY_CLEAR_TASK
应该清除所有旧信息。所以我不明白为什么会这样。
我应该怎么做才能收到当前意图而不是原始意图?
为 Notification
生成 PendingIntent
时,您需要这样做:
PendingIntent.getActivity(context, 0, tapIntent,
PendingIntent.FLAG_UPDATE_CURRENT)
否则你将只是使用以前的(旧的)PendingIntent
而不是创建一个新的。
我正在创建这样的意图
val tapIntent = Intent(context, TaskActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val id = createID()
tapIntent.putExtra("timestamp", currentTime)
val notificationIntent: PendingIntent = PendingIntent.getActivity(context, 0, tapIntent, 0)
val builder = NotificationCompat.Builder(context, "com.task")
.setSmallIcon(R.drawable.ic_android_black_24dp)
.setContentTitle(context.resources.getString(R.string.new_task_available))
.setContentIntent(notificationIntent)
.setAutoCancel(true)
.setPriority(NotificationCompat.PRIORITY_MAX)
with(NotificationManagerCompat.from(context)) {
notify(id, builder.build())
}
此通知每天生成几次。 在测试它时,我发现如果我没有关闭 activity,只是从中滑出,下次我从 intent 打开这个 activity 时,我会看到 intent 存储时间戳以前的通知,而不是当前的通知。
从intent中读取数据的代码非常简单:
val timestamp = intent.getLongExtra("timestamp", System.currentTimeMillis())
val hourFormatter = SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.getDefault())
Toast.makeText(this, hourFormatter.format(Date(timestamp)), LENGTH_LONG).show()
据我了解 Intent.FLAG_ACTIVITY_CLEAR_TASK
应该清除所有旧信息。所以我不明白为什么会这样。
我应该怎么做才能收到当前意图而不是原始意图?
为 Notification
生成 PendingIntent
时,您需要这样做:
PendingIntent.getActivity(context, 0, tapIntent,
PendingIntent.FLAG_UPDATE_CURRENT)
否则你将只是使用以前的(旧的)PendingIntent
而不是创建一个新的。