目 录CONTENT

文章目录

Android 关于PendingIntent的传递数据的坑

Stars-one
2025-01-03 / 0 评论 / 0 点赞 / 5 阅读 / 2327 字

问题:

如果传递一个数据类对象,会导致之前数据传不过来

如下面代码示例:

@Parcelize
data class AlarmItemInfo(val type: Int, var icon: Int, val title: String, val desc: String, var openSwitch: Boolean, var date: String) : Parcelable
	
class NotiReceiver : BroadcastReceiver() {

    companion object {
        private const val NO_TYpe = "no_type"
        private const val sourData = "sourData"

		//用于构造pendingintent的intent对象
        fun getIntent(data: NotiTimeSetActivity.AlarmItemInfo): Intent {
            val type = data.type
            return Intent(application, NotiReceiver::class.java).apply {
                putExtra(NO_TYpe, type)
				//这里如果传对象是不行的!!
				//putExtra(sourData, data)
                putExtra(sourData, GsonUtils.toJson(data))
            }
        }
    }

    override fun onReceive(context: Context, intent: Intent) {

		//由于我上述构造的pendingintent会启动当前广播接收器,所以是在这里接收数据
		
		//这里是无法正确获取传递过来的数据!!(如果上面是传递对象的话,这个no_type也会被影响)
        val type = intent.getIntExtra(NotiReceiver.NO_TYpe, 1)
       
    }

}

这里我构造的pendingintent使用的flags和requestId无问题,但是会导致数据传递不过来

最终解决方案还是将数据为string来进行传输

参考

0

评论区