PendingIntent兼容安卓12 的一个问题 您所在的位置:网站首页 为什么淘宝搜不到斐讯 PendingIntent兼容安卓12 的一个问题

PendingIntent兼容安卓12 的一个问题

2024-02-24 21:39| 来源: 网络整理| 查看: 265

这是我第一次遇到这个问题,反正我也是第一次做完整的安卓app,很多个第一次。

我之前做的那个老旧手机做桌面摆件的app,因为原来的“无干预”版本无法使用,所以又用回了“和风版”,但这个版本很久没用了,有些东西其实很旧就停了,所以重新搞搞,之前这个app在安卓11和鸿蒙上都可以了。但今天用安卓12的模拟器或鸿蒙启动后(可以启动),却无法进入主界面,直接FC。并出现下面出错信息:

E/AndroidRuntime: FATAL EXCEPTION: main

Process: com.example.thirdversionclock, PID: 14346

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.thirdversionclock/com.example.thirdversionclock.FullscreenActivity_desktop}: java.lang.IllegalArgumentException: com.example.thirdversionclock: 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.

看样子是PendingIntent参数的问题,于是在网上搜了一下,发现也是有很多人遇到这个问题,解决的方法大致有如下三种(我是每一种都试了,都没好使):

1、修改androidmanisfestj.xml每个activity和service的exported="false"改为“true”

2、修改pendingIntent参数

PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);

修改为:

PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);

把最后一个参数的0改为PendingIntent.FLAG_IMMUTABLE)或PendingIntent.FLAG_MUTABLE)

3、在build.gradle中添加依赖:

implementation 'androidx.work:work-runtime:2.7.1'

但是它最小使用版本是26,但我的app适配最低版本是17,即使改成了26,也可是只可启动,无法进入主页面。

没再看到其他的方法,但也没解决我的问题,最后我想那我就是兼容安卓12呗,于是我就把目标sdk版本的31改成了30.

然后我的app就可以完全正常的在安卓12的模拟器和鸿蒙手机上正常运行了,其他什么都没改。真是见了鬼!难道是我对这个“compileSdkVersion”和“targetSdkVersion ”有什么误解?目标版本和编译版本都是安卓11,但app在安卓12上可以正常运行,如果目标版本和编译版本都是安卓12反而不能正常运行?

那所谓的向下兼容是不是就是你最高版本没超过我,但我可以让你运行,如果允许版本超过我,代码就必须按照我的来,否则就不运行,还是有点迷迷糊糊。反正能用就行,我要求也不高,以后遇到类似的事也大致有个方向,应该我这个情况不是个案吧?如有大神可指点一二。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有