# Android 版本适配重点

其他细节请查看官网对应版本:https://developer.android.com/preview

## 7.0

1. 后台优化

- 移除了以下静态注册广播通知(动态注册可继续使用):CONNECTIVITY_ACTION  ACTION_NEW_PICTURE ACTION_NEW_VIDEO

2. 系统权限更改

- Android 7.0 或更高版本的应用私有目录被限制访问,传递软件包网域外的 file:// URI 可能给接收器留下无法访问的路径。因此,尝试传递 file:// URI 会触发 FileUriExposedException。分享私有文件内容的推荐方法是使用 FileProvider,并授予 URI 临时访问权限

- DownloadManager 不再按文件名分享私人存储的文件。旧版应用在访问 COLUMN_LOCAL_FILENAME 时可能出现无法访问的路径。面向 Android 7.0 或更高版本的应用在尝试访问 COLUMN_LOCAL_FILENAME 时会触发 SecurityException。通过使用 DownloadManager.Request.setDestinationInExternalFilesDir() 或 DownloadManager.Request.setDestinationInExternalPublicDir() 将下载位置设置为公共位置的旧版应用仍可以访问 COLUMN_LOCAL_FILENAME 中的路径,但是我们强烈反对使用这种方法。对于由 DownloadManager 公开的文件,首选的访问方式是使用ContentResolver.openFileDescriptor()。

file:// 类型的Uri无法使用,需要使用FileProvider转换

3. 多窗口模式

3.1 适配多窗口模式

https://developer.android.com/guide/topics/ui/multi-window?hl=zh_cn

3.2 关闭多窗口模式

在清单的 activity 或 application 元素中设置此属性,以启用或停用多窗口显示:

```html

android:resizeableActivity=["true" | "false"]

```

## 8.0

1. 后台执行限制

- 尝试在不允许其创建后台服务的情况下使用 startService() 函数,则该函数将引发一个 IllegalStateException

应使用startForegroundService函数,并且应用必须在创建服务后的五秒内调用该服务的 startForeground() 函数

2. 应用快捷键

https://developer.android.com/about/versions/oreo/android-8.0-changes?hl=zh-cn#as

3. 通知

针对 8.0 的应用,创建通知前需要创建渠道,创建通知时需要传入 channelId,否则通知将不会显示

4. 升级

针对 8.0 的应用需要在 AndroidManifest.xml 中声明 REQUEST_INSTALL_PACKAGES 权限,否则将无法进行应用内升级

5. 桌面图标(不强制,但是桌面图片显示会有白底)

https://mp.weixin.qq.com/s/WxgHJ1stBjokPi6lTUd1Mg

6. 广播

移除所有为隐式广播 Intent 注册的广播接收器,改为动态注册

7. 安装apk

需要增加权限

```html

```

## 9.0

1. 前台服务

应用以 Android 9 或更高版本为目标平台并使用前台服务,则必须请求 FOREGROUND_SERVICE 权限,系统会自动为请求权限的应用授予此权限,如果不请求 FOREGROUND_SERVICE权限将会报错,Manifest加入:

```html

```

2. 网络

使用https或者加入配置项android:networkSecurityConfig

3. Apache HTTP 客户端弃用

所以要想继续使用Apache HTTP,需要在应用的 AndroidManifest.xml 文件中添加

```html

```

4. 启动Activity

不能直接非 Activity 环境中(比如Service,Application)启动 Activity,否则会崩溃报错,需要Intent 中添加标志FLAG_ACTIVITY_NEW_TASK

## 10

1. 禁止后台启动Activity

使用通知触发,需要在AndroidManifest上增加权限USE_FULL_SCREEN_INTENT申明

2. 设备硬件信息读取限制,AndroidId,IMEI不可获取

3. Scope Store

可以使用以下配置停用分区存储

- 如果targetSdkVersion < 29,那么不用处理

- 如果targetSdkVersion >= 29,加入一下配置

```html

Android 10 or higher. -->

...

```

使用分区存储,如果不需要访问其他应用的公开文件,则不需要申请读写权限READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE

- 内部存储

可使用原有File API访问方式

- 外部存储

1. 外部公开目录

可供其他应用和用户自由访问的文件,卸载您的应用后,这些文件应该仍然可供用户使用

只有通过MediaStore API或者SAF(可在任意目录下新建文件,但是是通过用户交互方式),并且限制目录只能为媒体文件或者下载目录,无法使用File API访问

- 如果要保存照片、音频文件或视频剪辑,请使用 MediaStore API

- 如果要保存任何其他文件(如 PDF 文档),请使用 ACTION_CREATE_DOCUMENT intent,这是存储访问框架(SAF的一部分。此操作会调起系统UI界面

2. 外部私有目录

使用getExternalFilesDir()函数访问,后续操作可使用File API

卸载应用时会被清除,调用 getExternalFilesDir() 并传入指明您想要的目录类型的名称来获取特定于应用的目录,或调用getExternalFilesDir()传入自定义文件夹名称

```kotlin

//固定图片目录

getExternalFilesDir(DIRECTORY_PICTURES)

//自定义目录

getExternalFilesDir("myDir")

```

4. 后台定位权限

需要ACCESS_BACKGROUND_LOCATION权限

5. 限制使用非SDK接口

android 7.0 禁止 imei,Android一些适配相关推荐

  1. Android 8.0 学习(3)---Android 8.0系统的应用图标适配

    其实在去年Android 8.0系统刚推出的时候,我就仔细翻阅过Google官方的功能变更文档.变更项着实不少,但是真正需要我们去进行功能适配的地方却并不多.总结了一下,最主要需要进行适配的地方有两处 ...

  2. Android 8.0+通知栏(Notification)适配详解,判断通知权限是否打开,并跳转至通知管理页面

    前不久因为API26(Android 8.0)以上的设备无法显示通知栏,所以网上查阅了比较多了资料,得出结论,API26以后引入了通知渠道这么个东西,然后就写了一篇问题对应的博文:Android 8. ...

  3. android 8.0的imei简书,Android 8.0通知栏渠道,渠道组的适配和使用

    Android 8.0通知栏渠道,渠道组的适配和使用 推广一下 博客 android 8.0开始引入了渠道组的概念,app可以对通知类型进行细分,比如划分为:广告消息,私聊消息,群聊消息等. 但其实到 ...

  4. android 6.0权限库,Android 6.0动态权限适配

    前言 最近项目发现比较多的问题是关于Android 6.0的问题,APP安装之后,在Android 6.0之后的系统,点击直接奔溃打不开,这是为什么昵?这就是Android 6.0以上的系统引入运行时 ...

  5. 三星s4 android 6.0吗,快了 三星手机适配Android 6.0时间公布

    快了 三星手机适配Android 6.0时间公布 2016年01月26日 00:04作者:董岩编辑:董岩文章出处:泡泡网原创 分享 作为全球范围内无可争议的安卓手机巨头之一,三星在为其旗下手机适配安卓 ...

  6. 小米3刷android 6.0,小米3/4/Note适配Android6.0刷机包链接 注意事项及提取密匙

    前瞻科技快讯11月17日消息,11月12日,开发者@秋叶随风ivan曾表示,将发布小米3联通/电信版.小米4系列(不包括4c).小米Note标准版系列适配Android 6.0的刷机包,目前,相关链接 ...

  7. android 9.0 https 适配,如何适配 Android 9.0? 在 Android 9.0 上发生 SSL handshake timed out 异常怎么解决...

    Android 9.0 开始,默认不允许明文传输,所以在建立网络连接时会使用 https 连接,同时进行安全认证.如果应用没有做对应处理,即会发生上述异常. 解决方法有两种: 一. 在应用里声明允许明 ...

  8. android 7.0拷贝文件,Android 7.0应用间共享文件----FileProvider

    应用间经常需要将自己的私有文件共享给其他的app,如某应用想要共享图库的图片用来编辑用户的头像,或者文件管理app允许用户在不同目录下复制粘贴文件等等,但为了保护私有文件的安全性,在targetSdk ...

  9. Android 8.0学习 (36)---Android 8.0 WebView 拍照、简易预览、二维码扫描 各种问题解决

    Android 8.0 WebView 拍照.简易预览.二维码扫描 各种问题解决 项目用到了WebView包装HTML5做成app使用,其中有页面用到了二维码和拍照上传功能.本人从未做过android ...

最新文章

  1. 又一个Jupyter神器,操作Excel自动生成Python代码
  2. 学习!机器学习算法优缺点综述
  3. 二叉树的基本特性和二叉树的几种基本操作的机制_笃学不倦|二叉树(一)
  4. 电脑物理内存与虚拟内存的区别与关系
  5. 编程基本功:有了范例代码,怎么办?
  6. NginxJava笔记-Webservice使用HTTPS协议及Spring Boot配置tomcat
  7. Gradle+IDEA使用说明
  8. 大数据可视化该如何实现
  9. 传参:@RequestParam @RequestBody @PathVariable的作用
  10. 基于java的生信软件_常用生物信息学软件介绍和文献依据.docx
  11. mysql unsigend_创建表 查询数据
  12. 破解滑块验证码(打码平台)
  13. 小米音频测试软件,小米10 Pro音频评测
  14. 北京54、西安80、CGCS2000、WGS84坐标系及区别
  15. qpsk的映射过程_qpsk原理
  16. c语言-蓝桥杯-平面切割
  17. 【原】win 7 屏幕旋转问题的解决
  18. 电脑使用哪个录制视频软件比较好
  19. 基于Go语言Gin+Xorm+Layui实现RBAC权限管理系统
  20. 三姬分金/四姬分金/五姬分金(海盗分金币)等经典博弈论问题

热门文章

  1. IntelliJ IDEA查看方法在哪里被调用(Usage Search/Call Hierarchy)
  2. Mac上最好的Markdown文本编辑器_编辑工具
  3. ORACLE数据库常用命令总结
  4. SpringBoot JPA
  5. Spring和Junit整合
  6. 驾校约车html网站源码,html5首汽约车微信感恩活动页面模板
  7. 极光推送android点击跳转页面,app关闭时点击推送消息实现页面跳转
  8. python内置类型_Python内置对象类型
  9. alientek ministm32液晶显示程序_佳显12864中文字库液晶专业生产液晶显示模块
  10. redis 启动加载mysql_Redis分析系列:启动加载过程