PendingIntent.FLAG_IMMUTABLE 可以替换 PendingIntent.FLAG_UPDATE_CURRENT 吗?

2023-12-12

我正在处理PendingIntent with notification。 在我的项目中,我一直在使用PendingIntent.FLAG_UPDATE_CURRENT在一些代码中。它的定义如下。

Flag表示如果所描述的PendingIntent已经存在, 然后保留它,但用这个新的数据替换它的额外数据 意图。与 getActivity(Context, int, Intent, int) 一起使用, getBroadcast(Context, int, Intent, int) 和 getService(Context, int, 意图,int)。

如果您要创建只有额外内容的意图,则可以使用此方法 更改,并且不关心任何收到您之前的实体 PendingIntent 将能够使用您的新附加功能启动它,即使 他们没有明确地给予它。

即使设置了 FLAG_IMMUTABLE,FLAG_UPDATE_CURRENT 仍然有效 - PendingIntent 的创建者可以随时更新 PendingIntent 本身。 IMMUTABLE 标志仅限制更改的能力 调用者通过 send() 发送的意图的语义 发送()。


但我必须在两者之间做出选择FLAG_IMMUTABLE or FLAG_MUTABLE因为Android12。就我而言,我不需要使用PendingIntent.FLAG_MUTABLE。它的定义如下。

指示创建的 PendingIntent 应该是不可变的标志。 这意味着传递给发送的附加意图参数 填充此意图的未填充属性的方法将是 被忽略。

FLAG_IMMUTABLE 仅限制更改语义的能力 由 send() 调用者通过 send() 发送的意图。的创造者 PendingIntent 始终可以通过以下方式更新 PendingIntent 本身 FLAG_UPDATE_CURRENT。

正如你所看到的,他们说“即使设置了 FLAG_IMMUTABLE,FLAG_UPDATE_CURRENT 仍然有效...”和“PendingIntent 的创建者始终可以通过 FLAG_UPDATE_CURRENT 更新 PendingIntent 本身。”

所以,我想知道的是FLAG_IMMUTABLE可以完美替代FLAG_UPDATE_CURRENT在任何 Android 版本中?

例如

PendingIntent.getActivity(context, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
=> PendingIntent.getActivity(context, requestCode, intent, PendingIntent.FLAG_IMMUTABLE);

FLAG_IMMUTABLE and FLAT_MUTABLE控制如果其他应用可以修改你的PendingIntent。例如,如果您使用的是直接回复动作在通知中,系统需要您使用FLAT_MUTABLE允许它填写用户输入的文本并将其发送给您。

FLAG_UPDATE_CURRENT是有能力your app来更新自己的PendingIntent。这意味着如果您创建相同的PendingIntent唯一的区别是附加到您的Intent, FLAG_UPDATE_CURRENT将确保您的新附加功能得到实际使用(而不是仅再次使用原始设置)。

所以在你使用的每种情况下FLAG_UPDATE_CURRENT,你想要continue to use FLAG_UPDATE_CURRENT,为您的情况添加正确的可变性标志(在 99% 的情况下,是FLAG_IMMUTABLE).

要应用这两个标志,请使用|Java 中的符号(或单词or在科特林中):

PendingIntent.getActivity(context, requestCode, intent,
    PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PendingIntent.FLAG_IMMUTABLE 可以替换 PendingIntent.FLAG_UPDATE_CURRENT 吗? 的相关文章

  • 您的应用中的 Google Analytics SDK

    我按照这里的说明进行操作 https developers google com analytics devguides collection android v3 https developers google com analytics
  • 即使我单击“运行”,Eclipse 也会运行调试模式

    Eclipse 总是在调试模式下启动我的应用程序 即使我单击常规的 运行 按钮 有任何想法吗 我发现我必须重新启动 Xoom 才能使其再次正常工作
  • 无法获取项目的未知属性“assembleRelease”

    将 Android Studio 更新到版本 2 2 并将 gradle 插件更新到 2 2 0 后 出现以下错误 错误 32 1 评估项目 jobdispatcher 时出现问题 无法获取 org gradle api Project 类
  • 使用 ColorMatrix 调整亮度

    我正在尝试使用 ColorMatrix 调整图像的亮度 当尝试调整色相时 您可以在 Photoshop 中看到此选项 亮度和亮度也是两个不同的功能 但我不知道要更改哪些值才能实现此目的 目前我可以使用此代码更改色调 public stati
  • Android Studio Canary 3.4 Canary 4:错误:功能插件不支持variant.getApplicationId()

    自从我在新版本上更新了我的项目以来Android Studio 3 4 金丝雀 4 gradle 同步失败 因为 ERROR variant getApplicationId is not supported by feature plug
  • 如何使用具有三种布局的视图翻转器?

    我目前正在使用ViewFlipper我的主要活动有两种不同的布局 我想使用第三种布局 但我只能找到showNext and showPrevious 命令 有人可以告诉我如何使用来实现第三种布局吗ViewFlipper 为您制作了一个示例
  • 如何从Slog中查看日志

    如何查看 Slog API 生成的日志 是否有任何选项可以查看系统缓冲区中的日志 我的意思是查看我们使用的无线电缓冲区的日志 adb logcat b 无线电 而这个日志是由Android的Log类生成的 Slog API 的输出在哪里 怎
  • 将项目添加到 android 框架的设置中

    我正在 android 框架中工作 我想向 android 操作系统中的现有设置添加一个项目 您能告诉我如何执行此操作吗 首先阅读有关偏好活动 http developer android com reference android pre
  • 如何连接到Google Play服务并加载排行榜

    我想将我的游戏与 Google Play 服务连接 我已阅读有关 Android 开发人员的文档 并尝试遵循输入数字示例 但仍然无法加载排行榜 我有导入baseGameUtils 但我使用andengine 所以我没有使用来自谷歌的exte
  • 将清除会话标志设置为 FALSE 后,我丢失了已发布的值

    有人有一个合乎逻辑的解释为什么尽管我有clear session flage false当我未连接到经纪商时 我没有收到我订阅的更新的已发布消息 将 aore提到的标志设置为 false 后 我运行了我的应用程序 并且我不断向主题发布一些值
  • Android 在 Windowmanager 中调整视图大小

    这是我的代码 menubuttonClosed li inflate R layout menu button null menubutton ImageButton menubuttonClosed findViewById R id m
  • Android Studio APK META-INF/BCKEY.DSA 中复制的重复文件

    我的代码构建得很好 但是当我尝试在调试中运行它时 出现以下错误 Error Execution failed for task app transformResourcesWithMergeJavaResForDebug com andro
  • 旋转 Google 地图中的两层标记图标

    在我的应用程序中 我向地图添加了一定数量的标记 如下所示 private fun addMarker googleMap GoogleMap location Location val options MarkerOptions optio
  • 何时调用 glMatrixMode()

    我所关注的大多数 Android OpenGL ES 教程都有其 onSurfaceChanged 函数 如下所示 public void onSurfaceChanged GL10 gl int width int height gl g
  • Fresco:滚动 RecyclerView 后图像消失

    我有一个 Horizo ntal RecyclerView 每个项目都有一个使用 Facebook Fresco 图像库加载到其中的图像 然而 虽然正确的图像最初是在屏幕上滚动一点时加载的 但当 RecyclerView 进一步滚动时 它就
  • DialogFragment 关闭事件

    我需要处理 DialogFragment 的结尾 在调用 dismiss 之后 例如 我会在关闭后 包含 片段的活动内显示一个 toast 我该如何处理该事件 覆盖onDismiss 在你的DialogFragment中 或者使用setOn
  • 致命异常:GoogleApiHandler

    在我的项目中 我使用货币化服务 Vungle AppLovin 当我尝试加载广告时 出现此异常 E AndroidRuntime 致命异常 GoogleApiHandler 进程 kz ikar PID 3673 java lang NoS
  • Android SDK WebView调用Activity

    我试图在单击 WebView 组件内的链接时启动活动 我的Webview已加载到里面Main java我想启动SubActivity java当点击网站内的链接时Main java 另外 如何将参数传递给此活动 Example inspec
  • 如何以编程方式检测android中可用的底部软导航栏?

    我试图通过 android 程序确定软导航栏 我没有找到直接的方法来确定 有没有办法找到导航栏的可用性 软导航栏图像在这里 以下方法对我有用并在许多设备上进行了测试 public boolean hasNavBar Resources re
  • Android Webview隐私浏览

    我在我的 Android 应用程序中使用 webview 从多个站点获取一些网页 我对 webview 行为有一些疑问 webview 是否存储历史记录 cookie 表单自动填充信息 如果是的话 我们可以阻止它这样做吗 如果 Webvie

随机推荐

  • 如何为从 NIB 加载的 NSWindow 提供焦点?

    我在用着NSWindowController从 NIB 加载窗口 然而 当我打电话时showWindow 该窗口在视觉上位于最上面 但焦点仍保持在原来的位置 而不是将其移动到新窗口 It s easy to see this happeni
  • java中的日历日期为yyyy-MM-dd格式

    如何将日历日期转换为yyyy MM dd format Calendar cal Calendar getInstance cal add Calendar DATE 1 Date date cal getTime SimpleDateFo
  • 为什么 pytesseract 不能识别单个数字?

    I am performing ocr on a site and specifically on these two images 我对 OCR 相当陌生 我使用以下内容 from PIL import Image import pyte
  • 如何使用 jQuery 增加数量字段的值?

    我有一个带有一些数量字段的表格 每一侧都有一个加号和减号
  • .NET 中的网络文件复制

    我有一个运行 Samba 共享的 Ubuntu 盒子 向所有人开放 我可以通过 ip 地址访问它 所以我知道我可以完全访问它 在我的应用程序中 我正在尝试以下操作 但它无法通过 IP 地址 仅 DNS 名称 工作 val ip addres
  • 有没有更好的方法来设置 JPanel 图形的初始位置?)

    在梁的第15章中Java 编程简介 第七版 他介绍了一个程序 可以在 JPanel 上制作一个 2 D 球 并通过单击放大 缩小按钮来放大它 我修改了程序 以便它还可以 1 在用户单击 选项 单击时放大 缩小球 2 允许您通过按下按钮来选择
  • 矩阵求逆的最快方法

    我想用反函数和很多函数处理图像 为了让代码快速运行 有谁能在 3 种反转方法中建议一种快速方法吗 double cvInvert const CvArr src CvArr dst int method CV LU CV LU 高斯消除并选
  • 如何将天数添加到字符串数据类型的 jtextfield 中给出的日期

    再会 我只是想问一下在给定日期中添加天数 我有一个 jtexfield txtStart 和另一个 jtexfield txtExpiry 我需要在 txtExpiry 中显示距 txtStart 中的日期 102 天后的日期 我正在使用
  • 如何在函数定义和函数调用中使用可变宏参数?

    我正在尝试使用宏根据宏的参数定义几个类似的函数 然而 结果函数需要采用的参数的数量和类型在所有函数中并不相同 但我还需要将函数的所有参数传递到函数体内的另一个可变参数函数中 我想要完成的事情的一个最小例子 define COMMAND CO
  • Checkstyle规则限制根包之间的交互(使用ImportControl?)

    如何创建 Checkstyle 规则来限制不同根包之间的交互 我有以下3个根包 models views controllers They are not就像是com mycompany myproject models 他们是根包 我想禁
  • 如何使用循环获取dir()中的值?

    为什么我无法使用循环获取 dir 中项目的值 for item in dir print item 它只是打印 builtins doc loader name package spec 那么 我如何使用循环来打印 item 中的值 即 m
  • Scala 中的 N 皇后

    def queens n Int List List Int Int def placeQueens k Int List List Int Int if k 0 List List else for queens lt placeQuee
  • 仅包含“div”的表格碎片

    当尝试抓取网页时 该表没有 tr 标签 并且是全部 div tags 我试图抓取的站点检查器如下所示 检查员截图 我希望能够从table row类 但刮擦永远不会返回任何东西 使用下面的代码 当我抓取 table header 要不就 pr
  • 列表与字典(最大大小、元素数量)

    我试图确定列表和字典的最大大小 以 RAM 为单位 我也很好奇每个元素 条目可以容纳的最大数量 以及每个条目的内存占用量 我的理由很简单 我和大多数程序员一样 有点懒 这是一种美德 当我编写程序时 我喜欢只编写一次 并尽可能使其面向未来 我
  • 将 8 字节数组转换为 Double

    谈论 Visual Basic 6 我能够找到如何将 Double 转换为 8 字节数组 但反之则不然 在我开始尝试编码之前 是否有一些例程可以执行此操作 例如链接问题中描述的 CopyMemory 在这种情况下可以使用 CopyMemor
  • 查找所有 k 大小的子集,其总和为 n 大小的重复未排序正整数袋

    请注意 这是必需的C NET 2 0项目 不允许使用 Linq 我知道这里已经提出了非常类似的问题 并且我已经生成了一些工作代码 见下文 但仍然希望获得有关如何在给定 k 和 s 条件下使算法更快的建议 这是我到目前为止所学到的 动态规划是
  • Puppeteer 未拾取对话框

    我正在尝试测试 Puppeteer 中的警报框 msg await page goto http localhost 8080 waitUntil networkidle2 await page eval value el gt el va
  • 将新数据插入表中

    我希望对以下问题有所帮助 请注意 此代码从我选择的日期生成一个系数 在本例中为 03 07 dmda 它给出的系数等于 15 55 在这种情况下 我想生成一个新表 其中有一列包含日期 另一列包含与这些日期对应的系数 对于列日期 只有以下日期
  • 使用 selenium python 从隐藏元素中获取文本

    我在 python 中使用 selenium 从网站上抓取信息 但是我遇到了一个问题 当我单击网站从表中获取更多行后 出现的行有一个hidden xs hidden sm我似乎无法找到获取这些元素的方法 我的代码如下 你有什么办法可以帮助我
  • PendingIntent.FLAG_IMMUTABLE 可以替换 PendingIntent.FLAG_UPDATE_CURRENT 吗?

    我正在处理PendingIntent with notification 在我的项目中 我一直在使用PendingIntent FLAG UPDATE CURRENT在一些代码中 它的定义如下 Flag表示如果所描述的PendingInte