当前位置: 首页 > 知识库问答 >
问题:

在PendingIntent中设置FLAG_IMMUTABLE时参数为null

笪欣嘉
2023-03-14

目前,我正在尝试将FLAG_IMMUTABLE用于待定意图。get活动(对于android 12)。但是,它不起作用(在“挂起的意外”中设置的参数为空)。如果我用FLAG_MUTABLE替换它,它确实有效。

PendingIntent.getService(活动,0,myServiceRequest estIntent,PendingIntent.FLAG_ONE_SHOT或PendingIntent.FLAG_MUTABLE)

根据google文档,FLAG_IMMUTABLE是传递待定意向的推荐方式。有没有一些条件或者情况不能使用FLAG_IMMUTABLE?如果有一些有用的提示的例子

当我以以下格式传回additional_extra extra时,它为空。

intent.getParcelableExtra("pending_intent")

        val intent = Intent().apply {
            putExtra("additional_extra", "test")
        }

        pendingIntent?.send(this, 0, intent)

共有2个答案

闻人博
2023-03-14

在更改意图以使用FLAG_UPDATE_CURRENT |后面临类似的问题根据问题FLAG_IMMUTABLE。然后实际上注意到文档说指定FLAG_IMMUTABLE或FLAG_MUTABLE。第一个对我传递数据不起作用,切换到FLAG_MUTABLE似乎有效:

    val flags = when {
        Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE
        else -> PendingIntent.FLAG_UPDATE_CURRENT
    }
    val pendingIntent = PendingIntent.getBroadcast(ctx, someId.toInt(), intent, flags)
薛浩言
2023-03-14

有没有一些条件或者情况不能使用FLAG_IMMUTABLE?

根据:https://developer.android.com/guide/components/intents-filters#CreateImmutablePendingIntents

...某些用例需要可变的挂起意外对象

例如,我发现使用PendingIntent的BLE扫描和IntentService的活动识别更新都需要FLAG_MUTABLE,否则传递的意图基本上是空的。

 类似资料:
  • 问题内容: 预期结果 单击切换按钮将显示菜单,并向右滑动内容视图。动画结束后,内容视图的布局参数将更新到最终位置。 问题 更新内容视图的最终位置时,该语句导致崩溃。错误消息是 源代码 问题答案: PARAMS应该RESP添加到您的父视图,假设你有作为父视图然后,必须使用。 说明 : 举个例子,并且,它们是不同的独立的类。他们存储有关子视图的不同其他信息。 可以将权重值与每个视图相关联,而不能。 可

  • 我正在努力将jdbcType设置为传递给Ibatis查询的参数。我的后端表有定义为varchar的字段,mybatis框架似乎正在将我在Mapper.java中传递的字符串参数转换为nvarchar。因此,查询优化器需要时间来验证执行计划,执行隐式类型转换,从而导致一些意外的延迟。对解决这个问题有什么建议吗?

  • 问题内容: 在已经加载(运行)JVM之后,是否可以更改/修改/添加VM参数?如果是这样,我该怎么办? 问题答案: 对于通过命令行上的标志设置的属性,您需要System.setProperty。例如: 更新: 您无法动态启用调试,但是可以在启动时启用调试,但稍后再附加调试器。通过以下操作,您可以侦听端口12345并立即开始运行程序(通过)。然后,您可以在需要时附加调试器,分离调试器,稍后再附加等。

  • 问题内容: 我正在试验Jenkins,并且正在寻找一种方法来允许Jenkins为不同的项目构建设置参数。通常,所有这些属性都存储在settings.xml中(我目前为运行Jenkins的用户提供了settings.xml,其中包括默认属性和我的存储库)。 我想要同一项目的不同版本,这些版本特定于不同的Maven参数以及不同的目标。(有一项工作经常运行编译检查,另一项工作每小时将应用程序部署到测试服

  • 尝试将我的应用程序更新到Android S,但遇到一些问题,如标题/错误所述。我收到错误 目标 S(版本 10000 及更高版本)要求在创建“挂起提示”时指定FLAG_IMMUTABLE或FLAG_MUTABLE之一。强烈建议使用FLAG_IMMUTABLE,仅当某些功能依赖于 PendingIntent 是可变的(例如,如果需要将其与内联回复或气泡一起使用)时才使用FLAG_MUTABLE。 我

  • 问题内容: 我正在使用 javax.servlet.http.HttpServletRequest 来实现Web应用程序。 我可以使用 getParameter 方法获取请求的参数。但是我不知道如何在请求中设置参数。 问题答案: 您不能,不使用标准API。代表服务器收到的请求,因此添加新参数不是有效的选择(就API而言)。 原则上,您可以实现一个子类,该子类包装原始请求,并拦截方法,并在转发时传递