是时候适配android14了

这篇具有很好参考价值的文章主要介绍了是时候适配android14了。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、原来老项目中有用到前台Service的功能的app,需要在14当中制定服务类型,类型分类如下所示:

为了帮助开发者更有目的地定义面向用户的前台服务,Android 10 在 <service> 元素内引入了 android:foregroundServiceType 属性。

如果您的应用以 Android 14 为目标平台,则必须指定适当的前台服务类型。与以前的 Android 版本一样,可组合使用多个类型。下面列出了可供选择的前台服务类型:

camera
connectedDevice
dataSync
health
location
mediaPlayback
mediaProjection
microphone
phoneCall
remoteMessaging
shortService
specialUse
systemExempted

使用方式如下:

<manifest ...>
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
    <application ...>
      <service
          android:name=".MyMediaPlaybackService"
          android:foregroundServiceType="mediaPlayback"
          android:exported="false">
      </service>
    </application>
</manifest>

如果以 Android 14 为目标平台的应用未在清单中定义给定服务的类型,系统会在调用 startForeground() 时引发 MissingForegroundServiceTypeException

2、原来老项目存在隐士启动Activity的方式时,在android14上必须更改该activityexpored属性为true,否则系统会抛出异常,隐式调用清单文件配置如下:

<activity
    android:name=".AppActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="com.example.action.APP_ACTION" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

3、在android14上,声明动态广播时必须指定expored属性,代码如下:

val filter = IntentFilter(APP_SPECIFIC_BROADCAST)
val listenToBroadcastsFromOtherApps = false
val receiverFlags = if (listenToBroadcastsFromOtherApps) {
   ContextCompat.RECEIVER_EXPORTED
} else {
   ContextCompat.RECEIVER_NOT_EXPORTED
}
ContextCompat.registerReceiver(context, br, filter, receiverFlags)

4、从后台启动活动的附加限制

  • 现在,当应用使用 PendingIntent#send() 或类似方法发送 PendingIntent 时,如果它想要授予自己的后台 activity 启动待处理 intent 的启动特权,则必须选择启用。如需选择启用,应用应通过 setPendingIntentBackgroundActivityStartMode(MODE_BACKGROUND_ACTIVITY_START_ALLOWED) 传递 ActivityOptions 软件包。
  • 当可见应用使用 bindService() 方法绑定其他在后台应用的服务时,如果可见应用想要授予自己的后台 activity 对绑定服务的启动特权,则必须选择启用。如需选择启用,应用应在调用 bindService() 方法时包含 BIND_ALLOW_ACTIVITY_STARTS 标志。

5、非SDK限制进一步更新

请参阅官网sdk接口,及时过滤掉不安全的反射调用

6、最低安装api的级别,如果项目目标编译过老请尽快修改

从 Android 14 开始,targetSdkVersion 低于 23 的应用无法安装。要求应用满足这些最低目标 API 级别要求有助于提高用户的安全性和隐私性。

7、以前老项目不可关闭通知,在android14上是允许用户关闭的

如果您的应用向用户显示不可关闭的前台通知,请注意:Android 14 已更改此行为,允许用户关闭此类通知。

这项变更适用于通过 Notification.Builder#setOngoing(true) 或 NotificationCompat.Builder#setOngoing(true) 设置 Notification.FLAG_ONGOING_EVENT 来阻止用户关闭前台通知的应用。FLAG_ONGOING_EVENT 的行为已发生变化,使用户实际上能够关闭此类通知。

8、在调用killBackgroundProcesses时应用只能关闭后台进程

从 Android 14 开始,当您的应用调用 killBackgroundProcesses() 时,该 API 只能终止您自己应用的后台进程。

如果您传入另一个应用的软件包名称,此方法对该应用的后台进程没有影响,并且 Logcat 中会显示以下消息:

Invalid packageName: com.example.anotherapp

您的应用不应使用 killBackgroundProcesses() API,也不得以其他方式尝试影响其他应用的进程生命周期,即使在旧版操作系统上也是如此。Android 旨在让缓存应用在后台运行,并在系统需要内存时自动终止它们。如果您的应用会不必要地终止其他应用,则由于之后需要完全重启这些应用,因此可能会降低系统性能并增加耗电量,这比恢复现有缓存应用所消耗的资源要多得多。文章来源地址https://www.toymoban.com/news/detail-496582.html

到了这里,关于是时候适配android14了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?

    好久不见~ 最近几个月变化挺大的,不论是自己的家庭还是社会环境,把我们能做的做好,慢慢适应新的变化,这也是一种不可或缺的能力吧! Android14 即将正式发布,作为开发者需要注意哪些内容?长话短说,一起来看看吧~ 主要分为两部分: 一是影响所有的 Android 应用,这

    2024年02月05日
    浏览(41)
  • Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?

    据上一篇文又是一个月过去了,虽说金九银十,但今年的氛围实在是太冷清了,能有一份工就不错了吧。但愿美元加息早点结束,经济早点好起来~ 上一篇所说内容是所有 App 安装到 Android14 设备上的影响和需要注意的内容,本篇接下来就要介绍当 targetSdkVersion 升级到 34 时,

    2024年02月03日
    浏览(24)
  • ChatGPT对未来发展的影响?一般什么时候用到GPT

            ChatGPT以其强大的自然语言处理能力对未来的发展具有重要影响。以下是ChatGPT的潜在影响和一般使用情况: 改善自然语言理解和生成 :ChatGPT和类似的模型可以改善机器对人类语言的理解和生成。这将有助于改进各种应用领域,包括智能助手、聊天机器人、自动翻

    2024年02月06日
    浏览(25)
  • 创建Android项目的时候发现MainActivity文件不是.java后缀,而是kt后缀

    第一次创建Android项目时,MainActivity文件发现没有继承,和我们平时Java文件内容也不一样  其实是我们创建项目的时候选择了Kotlin语言,我们只需要创建项目的进行进行语言更改就 好啦!   

    2024年02月15日
    浏览(35)
  • 我的NPI项目之设备系统启动(八) -- Android14的GKI项目

    GKI是什么? Google为什么要推行GKI? GKI全称General Kernel Image。GKI在framework和kernel之间提供了标准接口,使得android OS能够轻松适配/维护/兼容不同的设备和linux kernel。 Google引入GKI的目的是将Framework和Kernel进一步的解耦。因为,android一直高度依赖linux kernel, linux kernel一更新,an

    2024年04月12日
    浏览(24)
  • Android 前台服务

    1.服务是什么(Service) Service 是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。此外,组件可通过绑定到服务与之进行交互,甚至是执行进程间通信 (IPC)。例如,服务可在后台

    2024年02月16日
    浏览(35)
  • Android的前台服务

    概述 前台服务是用户主动意识到的一种服务,因此在内存不足时,系统也不会考虑将其终止。前台服务必须为状态栏提供通知,将其放在运行中的标题下方。这意味着除非将服务停止或从前台移除,否则不能清除该通知。 在 Android 8.0(API 级别 26)及更高版本中,系统对后台

    2024年02月03日
    浏览(33)
  • Android 前台服务讲解

    目录 Android 前台服务和后台服务区别 前台服务(Foreground Service): 后台服务(Background Service): 总结: 前台服务更新: JobScheduler、WorkManager 区别和使用方式 android.app.ForegroundServiceStartNotAllowedException: Service.startForeground() 咋解决? WorkManager 在 Android 中,前台服务(Foreground

    2024年02月13日
    浏览(27)
  • Android app保活(前台服务)

    国内厂商定制,除非厂商给app白名单,否则只能用户手动添加白名单(应用自启和后台运行),才能通过前台服务实现app保活。 这里介绍前台服务相关实现方式。 开启服务: 服务: 清单文件

    2024年02月09日
    浏览(30)
  • Android启动前台服务(startForegroundService)

    问题: 注意事项: 8.0适配:通知需要加上NotificationChannel,开启前台服务的方式startForegroundService() 9.0适配:manifest.xml文件中需要增加权限:FOREGROUND_SERVICE Android之 Service服务详解 1、前台权限: 2、Service中开启通知: 3、启动Service: Android O对后台Service限制怎么解决 4、其他方

    2024年02月16日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包