1.Android发展简史
Android官方文档:https://developer.android.google.cn/about/versions/pie
Android操作系统是一个由Google和开放手持设备联盟共同开发的移动设备操作系统,其最早的一个版本Android 1.0 beta发布于2007年11月5日,如今已经走过十多个年头。
咱们从Android发展史倒序说起。
Google I/O 2019大会:发布Android10.0:AndroidQ名字为(Android Q Beta),对应的API:29.
Google I/O 2018大会:发布Android9.0:AndroidP名字为Pie派/馅饼,对应的API:28。
Google I/O 2017大会:发布Android8.0:AndroidO名字为Oreo奥利奥,对应的API:26。
Google I/O 2016大会:发布Android7.0:AndroidN名字为Nougat牛轧糖,对应的API:24。
Google I/O 2015大会:发布Android6.0:AndroidM名字为Marshmallow棉花糖,对应的API:23。
Google I/O 2014大会:发布Android5.0:Android L名字为Lollipop“棒棒糖”,对应的API:21。

二:本文主要内容
1.Android 6.0运行时权限申请
2.Android 7.0 文件共享异常解决方案
3.android 8.0 通知
4.后台执行限制,startService会异常
5.隐式广播问题
6.各版本相关细节内容

三:Android P 9.0 版本28适配
1.Android P 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉。Android 9.0强制使用https,会阻塞http请求,如果app使用的第三方sdk有http,将全部被阻塞。
解决方案:

解决方案:在资源文件新建xml目录,新建文件
<?xml version="1.0" encoding="utf-8"?>
<network-security-config><base-config cleartextTrafficPermitted="true" />
</network-security-config>清单文件配置:
<applicationandroid:networkSecurityConfig="@xml/network_security_config"><!--9.0加的,哦哦--><uses-libraryandroid:name="org.apache.http.legacy"android:required="false" /></application>但还是建议都使用https进行传输

2:前台服务
针对 Android 9 或更高版本并使用前台服务的应用必须请求 FOREGROUND_SERVICE 权限。 这是普通权限,因此,系统会自动为请求权限的应用授予此权限。如果针对 Android 9 或更高版本的应用尝试创建一个前台服务且未请求 FOREGROUND_SERVICE,则系统会引发 SecurityException。

3:其他Api的修改
java.lang.IllegalArgumentException: Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed
if (Build.VERSION.SDK_INT >= 26) {
canvas.clipPath(mPath);
} else {
canvas.clipPath(mPath, Region.Op.REPLACE);
}

四:Android O 8.0 版本26适配
1.通知栏
Android 8.0 引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道。用户界面将通知渠道称之为通知类别。针对 8.0 的应用,创建通知前需要创建渠道,创建通知时需要传入 channelId,否则通知将不会显示。
解决方案:https://blog.csdn.net/weixin_37292229/article/details/76186696
2. 后台执行限制
如果针对 Android 8.0 的应用尝试在不允许其创建后台服务的情况下使用startService() 函数,则该函数将引发一个 IllegalStateException。因为无法得知系统如何判断是否允许应用创建后台服务,所以我们只能简单的try-catch startService,保证应用不会crash。
异常信息:

java.lang.IllegalStateException: Not allowed to start service Intent ,app is in background uid UidRecord

3. 允许安装未知来源应用
针对 8.0 的应用需要在 AndroidManifest.xml 中声明REQUEST_INSTALL_PACKAGES 权限,否则将无法进行应用内升级。

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

4.隐式广播
由于 Android 8.0 引入了新的广播接收器限制,隐式广播需要动态注册。否则,广播失效。我对隐式广播的理解:未指定广播接收器类名,通过 Action 发送。

5.桌面图标适配
针对 8.0 的应用如果不适配桌面图标,则应用图标在 Launcher 中将会被添加白色背景:https://mp.weixin.qq.com/s/WxgHJ1stBjokPi6lTUd1Mg

五:Android N 7.0 版本24适配:
1.应用间共享文件
对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。
比如Uri.fromFile(file),当我们尝试传递 file://URI可能会触发FileUriExposedException。
解决方案:
要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider 类。
具体解决方案:
https://blog.csdn.net/lmj623565791/article/details/72859156

2:APK signature scheme v2
Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护。
1)只勾选v1签名就是传统方案签署,但是在7.0上不会使用V2安全的验证方式。
2)只勾选V2签名7.0以下会显示未安装,7.0上则会使用了V2安全的验证方式。
3)同时勾选V1和V2则所有版本都没问题。

3: org.apache不支持问题
// build.gradle里面加上这句话
defaultConfig {
useLibrary ‘org.apache.http.legacy’
}

4: SharedPreferences闪退
SharedPreferences read = getSharedPreferences(RELEASE_POOL_DATA, MODE_WORLD_READABLE);
//MODE_WORLD_READABLE :7.0以后不能使用这个获取,会闪退,修改成MODE_PRIVATE

六:Android M 6.0 版本23适配
1.动态权限申请
Android 6.0(API 级别 23)在清单文件声明权限之后,根据权限的敏感程度,有些权限被视为“常规”权限,因此系统会在安装应用时立即授予这些权限。还有些则被视为“危险”权限,因此需要用户明确授予相应的访问权限。所以,Android 6.0需要动态申请权限。如果应用需要一项危险权限,那么每次执行需要该权限的操作时,必须检查是否具有该权限。比如应用使用位置、相机、通信录需要提示用户允许使用这些权限。

运行时权限检查(Runtime Permisssions)
当App的targetSdkVersion>=23的时候, 需要用checkSelfPermission()用来检测App是否被授予了权限
可以用requestPermissions()用来请求权限 ,同时可以使用shouldShowRequestPermissionRationale()方法来向用户解释为什么需要这个权限.
具体实现:
https://blog.csdn.net/weixin_37292229/article/details/72358136

Android系统版本适配相关推荐

  1. 【Android 屏幕适配】异形屏适配 ② ( 需要异形屏适配情况 | 需要异形屏适配的 Android 系统版本 | 刘海屏状态判定 | 异形屏适配调试 - 华为云调试 )

    文章目录 一.需要异形屏适配情况 1.需要异形屏适配的 Android 系统版本 8.0 2.正常有状态栏的界面竖屏不需要适配 3.正常有状态栏的界面横屏需要适配 4.刘海屏状态判定 二.异形屏适配调 ...

  2. 魅族16spro android系统版本,魅族16sPro魔趣刷机包(系统刷机最新完整固件升级包魔趣100.0)...

    魅族16s Pro搭载高通骁龙 855 Plus处理器,全系列配备UFS 3.0存储,采用第二代双超线性扬声器与mEngine 3.0触感引擎,支持OneMind 3.5智能调优,最新系统版本已经更新 ...

  3. Android系统版本变迁

    参考:https://blog.csdn.net/u012964796/article/details/50662564 正式版本 由于涉及到版权问题,谷歌将甜点作为它们系统版本的代号的命名方法.甜点 ...

  4. 最新Android系统版本与API等级对应关系表

    最新Android系统版本与API等级对应关系表 从Android官网拷过来的,方便查阅... 官网地址:https://developer.android.com/guide/topics/mani ...

  5. android版本内存多少,内存大小决定Android系统版本?

    随着Android系统版本的更新(从Android 1.x-4.x),Android手机的内存容量也在不断的翻番中.从最早的256MB到最新的3GB,12倍的数值变化在彰显科技的进步之余,也潜移默化地 ...

  6. 如何获得android系统版本,Android如何获得系统版本

    Android如何获得系统版本 如何获得Android系统版本 项目移植中,遇到需要区分不同系统版本的问题.于是查找相关方法如下: android.os.Build类提供了当前系统信息. 可用if ( ...

  7. android系统版本市场分布调查报告,安卓网:中国Android系统手机品牌分布情况

    Android系统的智能手机越来越受到基友的青睐,Android系统版本的不断更新升级也为智能手机的使用提供了无限的空间.最近关注百度手机品牌排行榜,发现各品牌的智能手机搜索量都呈上升趋势,安卓网也从 ...

  8. 【Android 教程系列第 14 篇】Android 系统版本和 API 等级对应关系表(持续更新)

    这是[Android 教程系列第 14 篇],如果觉得有用的话,欢迎关注专栏. 很多人记不住 Android 系统版本和 API 等级对应的关系,这里我以 官网文档 和 安卓版本历史(维基百科) 为参 ...

  9. 4 月 Android 系统版本分布:8 代 Oreo 最主流

    转自:oschina www.oschina.net/news/115045/android-destribution Google 发布了每月 Android 系统版本使用情况报告,展示了不同版本活 ...

最新文章

  1. angularjs1-1
  2. python 网站 源码_在线浏览美图源码,附带python源码
  3. delphi char与string比较
  4. max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
  5. nginx开发_Filter模块执行顺序
  6. 企业实施ERP有哪些收益分析-要做到心中有数
  7. 海量数据处理简要说明(一)
  8. 站点简介(欢迎大家踊跃参与本站站点的建设,谢谢)
  9. MongoDB可视化管理工具-Robo 3T
  10. 怎样把视频文件压缩到最小?
  11. 0013-图像的阈值化-OTSU、固定阈值法、基于局部的阈值化
  12. 重启计算机网络连接巨慢,开机后宽带连接很慢怎么办 开机后宽带连接很慢的三步解决办法...
  13. WebApi-05 (三大家族及轮播图案例分享)
  14. MYSQL没有id字段的坑
  15. Excel应用技巧:合并单元格的排序
  16. 让我们旋转跳跃不停歇~~~当3D打印遇上八音盒!(二)
  17. Win10没有wifi选项也没网络图标怎么办
  18. 负责任的回应:开发Greenbelt网站
  19. 强化学习(二)--让你轻松玩转生成对抗网络(GAN)与生成对抗模仿学习(GAIL)
  20. 外贸企业oa移动办公管理系统

热门文章

  1. PHPCMS_V9模板制作模板列表
  2. 电脑桌面显示计算机信息,怎么显示我的电脑到桌面
  3. NXP蓝牙电话ECNR算法简介
  4. 论文阅读和分析:Hybrid Mathematical Symbol Recognition using Support Vector Machines
  5. 在Qt中制作入门动画-1
  6. mac SecureCRT rzsz上传下载的目录设置
  7. [RTOS--Structure]实时操作系统中ISR的处理为何要精短
  8. java生成表格图片_java生成表格图片
  9. 输入法智能联想 Java_[Android6.0][MTK6737] 修改默认输入法为 Sogou
  10. 抖音矩阵系统,抖音矩阵系统源码,抖音SEO源码、