android 7.0 禁止 imei,Android一些适配
# 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一些适配相关推荐
- Android 8.0 学习(3)---Android 8.0系统的应用图标适配
其实在去年Android 8.0系统刚推出的时候,我就仔细翻阅过Google官方的功能变更文档.变更项着实不少,但是真正需要我们去进行功能适配的地方却并不多.总结了一下,最主要需要进行适配的地方有两处 ...
- Android 8.0+通知栏(Notification)适配详解,判断通知权限是否打开,并跳转至通知管理页面
前不久因为API26(Android 8.0)以上的设备无法显示通知栏,所以网上查阅了比较多了资料,得出结论,API26以后引入了通知渠道这么个东西,然后就写了一篇问题对应的博文:Android 8. ...
- android 8.0的imei简书,Android 8.0通知栏渠道,渠道组的适配和使用
Android 8.0通知栏渠道,渠道组的适配和使用 推广一下 博客 android 8.0开始引入了渠道组的概念,app可以对通知类型进行细分,比如划分为:广告消息,私聊消息,群聊消息等. 但其实到 ...
- android 6.0权限库,Android 6.0动态权限适配
前言 最近项目发现比较多的问题是关于Android 6.0的问题,APP安装之后,在Android 6.0之后的系统,点击直接奔溃打不开,这是为什么昵?这就是Android 6.0以上的系统引入运行时 ...
- 三星s4 android 6.0吗,快了 三星手机适配Android 6.0时间公布
快了 三星手机适配Android 6.0时间公布 2016年01月26日 00:04作者:董岩编辑:董岩文章出处:泡泡网原创 分享 作为全球范围内无可争议的安卓手机巨头之一,三星在为其旗下手机适配安卓 ...
- 小米3刷android 6.0,小米3/4/Note适配Android6.0刷机包链接 注意事项及提取密匙
前瞻科技快讯11月17日消息,11月12日,开发者@秋叶随风ivan曾表示,将发布小米3联通/电信版.小米4系列(不包括4c).小米Note标准版系列适配Android 6.0的刷机包,目前,相关链接 ...
- android 9.0 https 适配,如何适配 Android 9.0? 在 Android 9.0 上发生 SSL handshake timed out 异常怎么解决...
Android 9.0 开始,默认不允许明文传输,所以在建立网络连接时会使用 https 连接,同时进行安全认证.如果应用没有做对应处理,即会发生上述异常. 解决方法有两种: 一. 在应用里声明允许明 ...
- android 7.0拷贝文件,Android 7.0应用间共享文件----FileProvider
应用间经常需要将自己的私有文件共享给其他的app,如某应用想要共享图库的图片用来编辑用户的头像,或者文件管理app允许用户在不同目录下复制粘贴文件等等,但为了保护私有文件的安全性,在targetSdk ...
- Android 8.0学习 (36)---Android 8.0 WebView 拍照、简易预览、二维码扫描 各种问题解决
Android 8.0 WebView 拍照.简易预览.二维码扫描 各种问题解决 项目用到了WebView包装HTML5做成app使用,其中有页面用到了二维码和拍照上传功能.本人从未做过android ...
最新文章
- 又一个Jupyter神器,操作Excel自动生成Python代码
- 学习!机器学习算法优缺点综述
- 二叉树的基本特性和二叉树的几种基本操作的机制_笃学不倦|二叉树(一)
- 电脑物理内存与虚拟内存的区别与关系
- 编程基本功:有了范例代码,怎么办?
- NginxJava笔记-Webservice使用HTTPS协议及Spring Boot配置tomcat
- Gradle+IDEA使用说明
- 大数据可视化该如何实现
- 传参:@RequestParam @RequestBody @PathVariable的作用
- 基于java的生信软件_常用生物信息学软件介绍和文献依据.docx
- mysql unsigend_创建表 查询数据
- 破解滑块验证码(打码平台)
- 小米音频测试软件,小米10 Pro音频评测
- 北京54、西安80、CGCS2000、WGS84坐标系及区别
- qpsk的映射过程_qpsk原理
- c语言-蓝桥杯-平面切割
- 【原】win 7 屏幕旋转问题的解决
- 电脑使用哪个录制视频软件比较好
- 基于Go语言Gin+Xorm+Layui实现RBAC权限管理系统
- 三姬分金/四姬分金/五姬分金(海盗分金币)等经典博弈论问题
热门文章
- IntelliJ IDEA查看方法在哪里被调用(Usage Search/Call Hierarchy)
- Mac上最好的Markdown文本编辑器_编辑工具
- ORACLE数据库常用命令总结
- SpringBoot JPA
- Spring和Junit整合
- 驾校约车html网站源码,html5首汽约车微信感恩活动页面模板
- 极光推送android点击跳转页面,app关闭时点击推送消息实现页面跳转
- python内置类型_Python内置对象类型
- alientek ministm32液晶显示程序_佳显12864中文字库液晶专业生产液晶显示模块
- redis 启动加载mysql_Redis分析系列:启动加载过程