以 S+(版本 31 及更高版本)为目标需要 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一

2023-12-10

我正在制作通知应用程序并努力解决以下错误:

java.lang.IllegalArgumentException: com.tonyapp.rabbitfarm: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
    Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
        at android.app.PendingIntent.checkFlags(PendingIntent.java:375)
        at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645)
        at android.app.PendingIntent.getBroadcast(PendingIntent.java:632)
        at com.allyants.notifyme.NotifyMe.scheduleNotification(NotifyMe.java:159)
        at com.allyants.notifyme.NotifyMe.<init>(NotifyMe.java:89)
        at com.allyants.notifyme.NotifyMe$Builder.build(NotifyMe.java:327)
        at com.tonyapp.rabbitfarm.NotesTakerActivity.onTimeSet(NotesTakerActivity.java:291)
        at com.wdullaer.materialdatetimepicker.time.TimePickerDialog.notifyOnDateListener(TimePickerDialog.java:1893)
        at com.wdullaer.materialdatetimepicker.time.TimePickerDialog.lambda$onCreateView$3$com-wdullaer-materialdatetimepicker-time-TimePickerDialog(TimePickerDialog.java:761)
        at com.wdullaer.materialdatetimepicker.time.TimePickerDialog$$ExternalSyntheticLambda3.onClick(Unknown Source:2)
        at android.view.View.performClick(View.java:7441)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1202)
        at android.view.View.performClickInternal(View.java:7418)
        at android.view.View.access$3700(View.java:835)
        at android.view.View$PerformClick.run(View.java:28676)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7839)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)

我搜索了这个问题的解决方案,但没有适合我的解决方案。

下面是我的 Mainactivity.java 代码:

 btnCancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            NotifyMe.cancel(getApplicationContext(),"test");
        }
    });


    btnNotify.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            dpd.show(getSupportFragmentManager(),"DatePickerDialog");
        }
    });
}

@Override
public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {

    now.set(Calendar.YEAR,year);
    now.set(Calendar.MONTH,monthOfYear);
    now.set(Calendar.DAY_OF_MONTH,dayOfMonth);

    tpd.show(getSupportFragmentManager(),"timepicker");



}

@Override
public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) {


    now.set(Calendar.HOUR_OF_DAY,hourOfDay);
    now.set(Calendar.MINUTE,minute);
    now.set(Calendar.SECOND,second);



    NotifyMe notifyMe = new NotifyMe.Builder(getApplicationContext())
            .title(edt1.getText().toString())
            .content(edt2.getText().toString())
            .color(255,0,0,255)
            .led_color(255,255,255,255)
            .time(now)
            .addAction(new Intent(),"Snooze",false)
            .addAction(new Intent(),"Dismiss",true)
            .addAction(new Intent(),"Done")
            .large_icon(R.mipmap.ic_launcher_round)
            .build();

}

请帮我解决这个问题。提前致谢。


  1. 确定您的项目是否有待定意向。
  2. If Yes然后在整个项目中搜索PendingIntent并将flag添加到PendingIntent中,如下所示。
  • before
PendingIntent mPendingIntent = PendingIntent.getActivity(mContext, 0, intent, 0);
  • after
PendingIntent mPendingIntent = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_MUTABLE);

OR

如果您的项目中没有 PendingIntent 或者即使您编写了该标志也会收到错误:

  • 将以下内容添加到您的build.gradle(app)依赖关系。
dependencies {
  // For Java
  implementation 'androidx.work:work-runtime:2.7.1' 

  // For Kotlin
  implementation 'androidx.work:work-runtime-ktx:2.7.1'
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以 S+(版本 31 及更高版本)为目标需要 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一 的相关文章

随机推荐

  • 当链接不包含 http 时 android.content.ActivityNotFoundException

    我的应用程序允许用户使用有限的 HTML 向其他用户输入消息 我允许的事情之一是使用超链接 Example a href www google com Google a 我正在填充TextView通过以下方法 txtview setMove
  • Mac OSX 上的 XAMPP:为什么作为“守护进程”运行? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有点困惑 我在 Mac OSX Macbook 上的 XAMPP 中运行 Apache 服务器 我写了一个文件上传脚本并且运行良好 但上传的文件的所有者为 daemon 如何将我或
  • 将可变大小表单转换为 javascript 和 PHP (AJAX)

    背景 我有一个包含一堆按钮的网页 想想 POS 系统 我希望用户能够编辑按钮的名称 用于将它们按特定顺序排列 和按钮的文本 其中包含项目和成本两部分 目前 我通过将数据从 PHP 页面 完成编辑的地方 传递到另一个 PHP 页面 我将其写回
  • C 和它的抽象机之间的精确关系是什么?

    我正在读 C in a nutshell 里面有很多类似的句子 语句指定要执行的一个或多个操作 例如 为变量赋值 将控制权传递给函数 或者 跳到另一个声明 我的问题是 执行 这些动作的东西是什么 我到处读到过 C 被定义为在抽象机器上运行
  • ASP、MySQL 和 UTF-8

    首先 我几乎阅读了所有与此相关的主题 我已经尝试了所有建议 但无法解决这个问题 事情是这样的 我在一个项目中使用经典 ASP 和 MySQL 一切都很好 如果我写 一个例子 Response Write 它就像一个魅力 但是 如果该字符串来
  • MySQL SELECT 计数器、分组依据

    我不确定我所要求的是否可能 但它可能是哈哈 基本上 我有两张桌子 曲目和专辑 我想显示所有曲目的列表并从专辑部分获取名称 这些表看起来像这样 tbl tracks id int auto increment primary key albu
  • 如何获取黑莓当前位置的纬度和经度?

    我正在开发一个具有 GPS 功能的应用程序 如何获取当前位置的纬度和经度 我自己找到了解决方案 以下代码对我来说效果很好 package mypackage import javax microedition location Locati
  • Angularjs 格式日期

    Angular 中是否有任何指令 我想在用户在日期输入中写入 2 3 67 时启用用户 日期需要格式化为 02 03 1967 我自己尝试了一些东西 但它们不起作用 当显示用户输入时 只需添加 Angularjs 格式即可 yourdate
  • AngularJS指令输入宽度通过keyup调整大小

    我创建了一个指令 以便在键入时自动调整宽度的输入 如 Google 联系人 但似乎不行 因为每个字符的宽度不同 您能帮我提供一个更优化的方法吗 谢了 http plnkr co edit DSn0JDDShOXvuXXF9PP2 p pre
  • 除非提供“--jsx”标志,否则无法使用 JSX

    我四处寻找这个问题的解决方案 他们都建议添加 jsx react 到您的 tsconfig json 文件 我已经做到了 另一种是添加 include 我也做过 但是 当我尝试编辑时仍然收到错误 tsx文件 下面是我的 tsconfig 文
  • Chrome 扩展:(DOM)调试器 API 不再工作

    自版本 37 0 2062 103 以来 我们的 Chrome 扩展程序不再正常工作 它曾经在 chrome 版本 36 0 1985 143 上正常工作 具体来说 当我们使用 DOMDebugger 时 调试器 API 已停止为我们工作
  • Apple Wallet:Push Token 对于每个设备来说都是唯一的吗?

    我已经实现了一个可以为苹果钱包创建通行证的实现 一旦设备向服务器注册 就会推送该设备唯一的令牌 还是将来最终会改变 若有 原因为何 是的 为了保护隐私 推送令牌会定期轮换 这可能会随机发生 或者随着硬件的变化 用户转移到新手机 或者经常随着
  • 开发人员可以使用哪些选项来使用专用标签打印机进行打印?

    我们的业务使用定制的内部软件来创建要在大型高速标签打印机上打印的运输标签 开发人员可以使用哪些选项 库 服务 成熟软件等 来协助创建自定义格式标签并将其发送到专用标签打印机的过程 更多背景信息 Instead of using softwa
  • 使用 LayoutKind.Explicit 进行布尔编组,这是否已损坏或按设计失败?

    首先 布尔类型据说有一个四字节值的默认编组类型 所以下面的代码有效 struct A public bool bValue1 public int iValue2 struct B public int iValue1 public boo
  • Windows Phone 8 弹出窗口的宽度和高度

    我将网格放置在弹出控件中 我希望网格能够根据 Windows Phone 8 应用程序的 3 种不同布局大小自动调整大小 480 800 768 1280 720 1280 但似乎我必须设置宽度和高度脱离电网明确地因为它根据子控件大小重新调
  • API 调用中会话 ID 未刷新

    我正在尝试使用VBA Excel访问网站提供的APIwww myfxbook com API文档在这里 https www myfxbook com fr api 获取数据的步骤如下 通过登录API登录 从登录 API 的响应中获取会话的会
  • 在 Windows 上安装“kgio-2.9.2”Gem 时出错

    在 Windows 上安装 kgio gem 时遇到问题 使用 Ruby 2 1 6 32 位和已安装的 DevKit Installing kgio 2 9 2 with native extensions Gem Ext BuildEr
  • 无效的应用程序二进制文件[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 今天我们收到了有关我们提交的反馈 我们不明白所报告的问
  • 在node.js中读写json文件

    好的 我有这个 json 文件 joe name joe lastName black matt name matt lastName damon 我想用node js添加一个人 joe name joe lastName black ma
  • 以 S+(版本 31 及更高版本)为目标需要 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一

    我正在制作通知应用程序并努力解决以下错误 java lang IllegalArgumentException com tonyapp rabbitfarm Targeting S version 31 and above requires