Android10适配-针对从后台启动 Activity 的限制
Android 10 中的隐私权变更
从 Android 10 开始,系统会增加针对从后台启动 Activity 的限制。此项行为变更有助于最大限度地减少对用户造成的中断,并且可以让用户更好地控制其屏幕上显示的内容。只要您的应用启动 Activity 是因用户互动直接引发的,该应用就极有可能不会受到这些限制的影响。
谷歌官方建议将从后台启动的Activity改为显示通知。还可以选择提供全屏Intent。
以下以全屏Intent为适配范围。
1、影响范围
在Android Q 上运行的所有应用,包括以 Android 9(API 级别 28)或更低版本为目标平台的应用。即使应用以 Android 9 或更低版本为目标平台并且最初安装在运行 Android 9 或更低版本的设备上,该行为变更仍会在设备升级到 Android Q 后生效。
2、增加权限
如果应用以 Android 10 或更高版本为目标平台并使用涉及全屏 intent 的通知,则必须在应用的清单文件中请求 USE_FULL_SCREEN_INTENT 权限。这是普通权限,因此,系统会自动为请求权限的应用授予此权限。
即在AndroidManifest.xml中增加USE_FULL_SCREEN_INTENT权限:
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT"/>
如果以 Android 10 或更高版本为目标平台的应用尝试创建使用全屏 intent 的通知而未请求必要权限,则系统会忽略此全屏 intent 并输出以下日志消息:
Package your-package-name: Use of fullScreenIntent requires the USE_FULL_SCREEN_INTENT permission
3、创建全屏Intent
Intent fullScreenIntent = new Intent(this, CallActivity.class);PendingIntent fullScreenPendingIntent = PendingIntent.getActivity(this, 0,fullScreenIntent, PendingIntent.FLAG_UPDATE_CURRENT);NotificationCompat.Builder notificationBuilder =new NotificationCompat.Builder(this, CHANNEL_ID).setSmallIcon(R.drawable.notification_icon).setContentTitle("Incoming call").setContentText("(919) 555-1234").setPriority(NotificationCompat.PRIORITY_HIGH).setCategory(NotificationCompat.CATEGORY_CALL)// Use a full-screen intent only for the highest-priority alerts where you// have an associated activity that you would like to launch after the user// interacts with the notification. Also, if your app targets Android 10// or higher, you need to request the USE_FULL_SCREEN_INTENT permission in// order for the platform to invoke this notification..setFullScreenIntent(fullScreenPendingIntent, true);Notification incomingCallNotification = notificationBuilder.build();
注意:创建通知时,请务必添加描述性标题和消息。
4、机型适配
(1)Android 10 适配攻略中提到部分机型直接设置setPriority无效(或者说以渠道优先级为准)。
需要闯将通知渠道时将重要性设置为IMPORTANCE_HIGH:
NotificationChannel channel = new NotificationChannel(channelId, "xxx", NotificationManager.IMPORTANCE_HIGH);
(2)Android 10(Api 29)新特性适配 - 禁止后台启动Activity中提到:
在华为mate20(Api-28)上需要到设置中打开横幅通知;原生Android Q上有效
参考文章:
官网:针对全屏 Intent 的权限变更;从后台启动 Activity 的限制;创建高优先级通知
Android 10(Api 29)新特性适配 - 禁止后台启动Activity
Android 10 适配攻略
Android10适配-针对从后台启动 Activity 的限制相关推荐
- Android Q 限制后台启动Activity
描述 Android Q限制在没有用户交互的情况下加载Activity.这一变化可以最大限度的减少对用户的打扰,保持用户对屏幕上所显示内容的可控性. 运行在Android Q上的APP仅在以下一种或多 ...
- android 10+从后台启动 Activity 的限制
限制后台启动activity 如果未满足相关条件,则后台不允许启动activity,并会打印如下相关的log: // anything that has fallen through would cu ...
- PendingIntent无法唤起activity | service无法唤起activity【从后台启动activity无效的原因】
前言 如果你打开activity的代码正确无误,但是使用PendingIntent或者在service中就是无法开启一个activity时,请检查是是否符合下面的情况: 代码正常,打log发现语句也被 ...
- 如何在Android 10中从后台启动活动
如何在Android 10中从后台启动活动? https://www.it1352.com/1922748.html 小米手机"后台弹出界面(允许应用在后台弹出界面)"权限问题解决 ...
- 在后台Service中直接启动Activity
如果你有Service在跑,但是没有处于resume的activity,这时候如果你想启动一个Activty,比如提醒用户升级应用,在后台Service中是可以直接启动Activity的 如果用的co ...
- android菜单键 r9,Android OPPO R9 后台 无法启动 Activity 问题
一 .oppo后台无法启动activity 今天测试给我提bug ,OPPO 手机 应用退出后台后,无法接受视频通话界面,就是应用在后台,service中无法启动activity,找了各种问题,以为是 ...
- Android 系统(215)---Android O_GO后台启动服务改动
Android O_GO后台启动服务改动 Android O_GO后台启动服务改动 1. 问题现象 应用在适配Android O/GO的系统时,会发现后台启动不了服务,会报出如下异常,并强退: jav ...
- (4.6.29.3)插件化之代码加载:启动Activity等四大组件之hook方式
文章目录 一.代理模式和Hook原理 1.1 Hook 原理 1.2 代理模式 二.Binder Hook 2.1 分析:系统服务的获取过程 2.2 寻找Hook点 2.3 hook Binder示例 ...
- Android 7.0 ActivityManagerService(2) 启动Activity的过程:一
从这一篇博客开始,我们将阅读AMS启动一个Activity的代码流程. 自己对Activity的启动过程也不是很了解,这里就初步做一个代码阅读笔记,为以后的迭代打下一个基础. 一.基础知识 在分析Ac ...
最新文章
- Tengine Framework基础
- servlet的 session什么时候用_抖音什么时候用dou+
- java 常用接口的实现--compareable
- 记录:C#编程中的字符串
- 基于 Jenkins 快速搭建持续集成环境
- 【算法】SVM分类精度为0,结果很烂怎么办?
- word2016 图片去底灰_看来看去,还是高级灰最耐看,喜欢现代简约风的你,选它准不会错...
- 现实世界的Windows Azure:采访Gizmox 研发中心的副总裁Itzik Spitzen先生
- 免费中文Python电子书
- Linux学习6 脚本登录主机 数组 排序 系统负载查询命令 定期备份
- 欧姆龙OMRON PLC之Host Link协议(一)
- NOIP2015 普及组第四题 推销员
- [摘录] 暴躁程序员的产生
- STM32操控外设为什么要先使能时钟
- @Cacheable使用spring缓存
- Ubantu18.04 安装qq
- [Swift]LeetCode1031. 两个非重叠子数组的最大和 | Maximum Sum of Two Non-Overlapping Subarrays...
- GC8418 数字光纤音频解码芯片 光纤解码芯片 MS8412替代
- 数据挖掘思维和实战06 数据建模:该如何选择一个适合我需求的算法?
- Oracle账号频繁被锁定