为了支持在Android 12中追踪通知的点击事件,需要使用“Notification Trampoline”方式。这使得通知点击打开的activity仅仅是中介去除了主活动和通知之间的直接链接。以下是示例代码展示如何使用“Notification Trampoline”方式进行追踪通知点击事件:
先在AndroidManifest.xml中定义一个activity(即用于通知跳转的中介):
然后在创建Notification的时候,设置setContentIntent():
val intent = Intent(context, NotificationTrampolineActivity::class.java).apply {
data = Uri.parse("your-scheme://your-host")
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val pendingIntent = PendingIntent.getActivity(
context,
0,
intent,
PendingIntent.FLAG_CANCEL_CURRENT
)
val notificationBuilder = NotificationCompat.Builder(context, CHANNEL_ID)
.setContentIntent(pendingIntent)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle(title)
.setContentText(message)
NotificationTrampolineActivity将被用作接收到上述意图的入口点。在该活动的onCreate()方法中,从Intent中提取所需的信息,然后从Notification中启动适当的Activity:
class NotificationTrampolineActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
handleIntent(intent)
finish()
}
private fun handleIntent(intent: Intent) {
val uri