Android框架mqtt库无法兼容高版本android13的问题

这篇具有很好参考价值的文章主要介绍了Android框架mqtt库无法兼容高版本android13的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近使用mqtt库,测试的时候发现在Android12及以下正常,但在13上闪退,闪退日志如下

java.lang.IllegalArgumentException: com.yummo.xcar: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

提示很明显是version 31版本在创建PendingIntent的时候需要做适配,于是全局搜索把适配代码加上,代码如下

PendingIntent pendingIntent;
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                        pendingIntent = PendingIntent.getBroadcast(getApplication().getApplicationContext(), 0, activityIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
                    } else {
                        pendingIntent = PendingIntent.getBroadcast(getApplication().getApplicationContext(), 0, activityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
                    }

加上之后还是报同样的错误,几经周折才发现mqtt库里也用到了PendingIntent且没有做适配,我所使用的mqtt版本如下:

api "org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0"
api "org.eclipse.paho:org.eclipse.paho.android.service:1.1.1"

本想着去官方库里看下有没有最新的已经适配的库,去了官网才发现最后一个版本已停留在2017年,痛苦~,官网链接:mqtt-service,找了好久~好在后面找到一篇文章找到了替代方案:兼容方案,具体替换方式参考该链接吧,替换库的下载地址,替换完成后将旧的引用包删除并重新导入进行编译,结果又报了另外一个库找不到,于是我又根据日志添加了对应的依赖库

api 'com.jakewharton.timber:timber:4.7.1'

重新编译后终于可以了!!!

但是该库创建的mqttservice销毁再重建时会有数据库异常导致的闪退问题,需要注意,最后总算是解决了,网上关于mqtt适配高版本的文章太少了,希望能给遇到同样问题的朋友一点帮助文章来源地址https://www.toymoban.com/news/detail-732143.html

到了这里,关于Android框架mqtt库无法兼容高版本android13的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高通 Android 8/9/12/13 兼容U盘识别extfat模式

    Android本身不支持extfat格式 需要通过nofuse 打kernel补丁方式去实现  Android 8/9 1、kernel/msm-4.9/arch/arm64/configs/sdm670-perf_defconfig 增加代码如下( 需要提交编译kernel记得git add sdm670-perf_defconfig 不需要commit哈!否则编译会还原这个文件,切记!) 2、kernel/msm-4.9/arch/arm64/configs/sdm670_def

    2024年02月04日
    浏览(45)
  • Android保存图片到相册,兼容Android10及以上版本

    Android 共享存储空间 访问共享存储空间中的媒体文件 MediaStore是android系统提供的一个多媒体数据库,专门用于存放多媒体信息的,通过ContentResolver即可对数据库进行操作。 MediaStore.Files: 共享的文件,包括多媒体和非多媒体信息; MediaStore.Audio: 存放音频信息; MediaStore.Image: 存放

    2024年02月11日
    浏览(40)
  • Android app兼容低版本Java环境

    原文地址: Android app兼容低版本Java环境 - Stars-One的杂货小窝 起因是修复一个Bug遇到的问题,找到了一个可以让app兼容低版本java的方法 众所周知,Android版本更新后,其内置的JRE环境也随之更新了 假如我们在app中用到了JDK8的特有的属性,而用户的手机设备系统还是比较低,而没有JR

    2024年02月05日
    浏览(25)
  • Android的Gradle、Studio、Java、Kotlin版本兼容

    Android Gradle 插件和 Android Studio 兼容性 Android Studio 版本 所需插件版本 Hedgehog - 2023.1.1 3.2-8.2 Giraffe - 2022.3.1 3.2-8.1 Flamingo - 2022.2.1 3.2-8.0 Electric Eel - 2022.1.1 3.2-7.4 Dolphin - 2021.3.1 3.2-7.3 Chipmunk - 2021.2.1 3.2-7.2 Bumblebee - 2021.1.1 3.2-7.1 Arctic Fox - 2020.3.1 3.1-7.0 Gradle版本和Java版本对应关系 Ja

    2024年02月09日
    浏览(34)
  • Android 13 - Media框架(13)- OpenMax(一)

    这一节我们将了解Android OpenMax框架,该框架了解完成之后,我们会再回过头去了解 ACodec,将 MediaCodec - ACodec - OpenMax 连接起来,了解组件的创建控制以及 buffer 的流转。 本篇属于个人学习笔记,如有错误欢迎指出。 我将Android OpenMax框架分为3个部分来学习: media.codec service:

    2024年02月06日
    浏览(26)
  • Android 13 版本变更总览

    https://developer.android.google.cn/about/versions/13?hl=zh-cn 文章基于官方资料上提取 https://developer.android.google.cn/about/versions/13/summary?hl=zh-cn https://developer.android.google.cn/about/versions/13/behavior-changes-all?hl=zh-cn 性能和电池 前台服务 (FGS) 任务管理器 (https://developer.android.google.cn/guide/components/f

    2024年02月07日
    浏览(29)
  • Android 13 - Media框架(31)- ACodec(七)

    之前的章节中我们解了 input buffer 是如何传递给 OMX 的,以及Output buffer 是如何分配并且注册给 OMX 的。这一节我们就来看ACodec是如何处理OMX的Callback的。 这一节我们只大致记录Callback是如何传递给ACodec的。在之前的学习中我们了解到OMXNodeInstance中会有一个专门的线程来处理OM

    2024年01月19日
    浏览(33)
  • Android13 --- POST_NOTIFICATIONS权限无法关闭

       Android 13(API 级别 33)及更高版本支持用于从应用发送非豁免(包括前台服务 [FGS])通知的运行时权限:POST_NOTIFICATIONS。此更改有助于用户专注于最重要的通知。 通知运行时权限  |  Android 开发者  |  Android Developers    在Android 13的平台,应用如果想发送通知,则要申请

    2024年02月11日
    浏览(25)
  • Android 13 - Media框架(10)- NuPlayer::Renderer

    这一节我们来了解 NuPlayer Renderer 是如何工作,avsync 机制是如何运行的。 调用 NuPlayer start 方法后会创建 Renderer,传入参数为 callback message、AudioSink、MediaClock 以及 flags。可以看到 NuPlayer 中也用一个 generation 来管理 Renderer 的状态,如不了解 generation 是如何使用的,可以看前面一

    2024年02月09日
    浏览(23)
  • Android 13 - Media框架(9)- NuPlayer::Decoder

    这一节我们将了解 NuPlayer::Decoder,学习如何将 MediaCodec wrap 成一个强大的 Decoder。这一节会提前讲到 MediaCodec 相关的内容,如果看不大懂可以先跳过此篇。原先觉得 Decoder 部分简单,越读越发现自己的无知,Android 源码真是一个巨大的宝库! ps:本文中大写的 Decoder 指代的是

    2024年02月09日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包