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 的限制相关推荐

  1. Android Q 限制后台启动Activity

    描述 Android Q限制在没有用户交互的情况下加载Activity.这一变化可以最大限度的减少对用户的打扰,保持用户对屏幕上所显示内容的可控性. 运行在Android Q上的APP仅在以下一种或多 ...

  2. android 10+从后台启动 Activity 的限制

    限制后台启动activity 如果未满足相关条件,则后台不允许启动activity,并会打印如下相关的log: // anything that has fallen through would cu ...

  3. PendingIntent无法唤起activity | service无法唤起activity【从后台启动activity无效的原因】

    前言 如果你打开activity的代码正确无误,但是使用PendingIntent或者在service中就是无法开启一个activity时,请检查是是否符合下面的情况: 代码正常,打log发现语句也被 ...

  4. 如何在Android 10中从后台启动活动

    如何在Android 10中从后台启动活动? https://www.it1352.com/1922748.html 小米手机"后台弹出界面(允许应用在后台弹出界面)"权限问题解决 ...

  5. 在后台Service中直接启动Activity

    如果你有Service在跑,但是没有处于resume的activity,这时候如果你想启动一个Activty,比如提醒用户升级应用,在后台Service中是可以直接启动Activity的 如果用的co ...

  6. android菜单键 r9,Android OPPO R9 后台 无法启动 Activity 问题

    一 .oppo后台无法启动activity 今天测试给我提bug ,OPPO 手机 应用退出后台后,无法接受视频通话界面,就是应用在后台,service中无法启动activity,找了各种问题,以为是 ...

  7. Android 系统(215)---Android O_GO后台启动服务改动

    Android O_GO后台启动服务改动 Android O_GO后台启动服务改动 1. 问题现象 应用在适配Android O/GO的系统时,会发现后台启动不了服务,会报出如下异常,并强退: jav ...

  8. (4.6.29.3)插件化之代码加载:启动Activity等四大组件之hook方式

    文章目录 一.代理模式和Hook原理 1.1 Hook 原理 1.2 代理模式 二.Binder Hook 2.1 分析:系统服务的获取过程 2.2 寻找Hook点 2.3 hook Binder示例 ...

  9. Android 7.0 ActivityManagerService(2) 启动Activity的过程:一

    从这一篇博客开始,我们将阅读AMS启动一个Activity的代码流程. 自己对Activity的启动过程也不是很了解,这里就初步做一个代码阅读笔记,为以后的迭代打下一个基础. 一.基础知识 在分析Ac ...

最新文章

  1. Tengine Framework基础
  2. servlet的 session什么时候用_抖音什么时候用dou+
  3. java 常用接口的实现--compareable
  4. 记录:C#编程中的字符串
  5. 基于 Jenkins 快速搭建持续集成环境
  6. 【算法】SVM分类精度为0,结果很烂怎么办?
  7. word2016 图片去底灰_看来看去,还是高级灰最耐看,喜欢现代简约风的你,选它准不会错...
  8. 现实世界的Windows Azure:采访Gizmox 研发中心的副总裁Itzik Spitzen先生
  9. 免费中文Python电子书
  10. Linux学习6 脚本登录主机 数组 排序 系统负载查询命令 定期备份
  11. 欧姆龙OMRON PLC之Host Link协议(一)
  12. NOIP2015 普及组第四题 推销员
  13. [摘录] 暴躁程序员的产生
  14. STM32操控外设为什么要先使能时钟
  15. @Cacheable使用spring缓存
  16. Ubantu18.04 安装qq
  17. [Swift]LeetCode1031. 两个非重叠子数组的最大和 | Maximum Sum of Two Non-Overlapping Subarrays...
  18. GC8418 数字光纤音频解码芯片 光纤解码芯片 MS8412替代
  19. 数据挖掘思维和实战06 数据建模:该如何选择一个适合我需求的算法?
  20. Oracle账号频繁被锁定

热门文章

  1. IDEA Postfix Completion环绕模板的简单应用
  2. 电脑前的身体保健攻略
  3. 电信业务分类目录_2020年5月国内增值电信业务许可情况分析报告
  4. 企业寄件客户管理教程
  5. 百度地图 - 绘制扇区
  6. 波比机在5G的应用场景,你期待哪个?
  7. Altium Designer PCB板中各层的作用
  8. 香蕉派安装64位linux,香蕉派之Lubuntu初体验
  9. 在苹果Mac上的“日历”中怎样使用Siri建议?
  10. OpenGL使用纯VBO方式渲染出三角形,非VAO