android 6.0 :
1.运行时权限
2. 增加低电耗模式和应用待机模式
3. 取消支持 Apache HTTP 客户端
4. 移除硬件标识符访问权
5. WLAN 和网络连接变更
6. 相机服务变更

ps: 相机权限:

1.在Manifest中声明所需权限:
<uses-permission android:name="android.permission.CAMERA"/>2.调用ContextCompat.checkSelfPermission()检查权限:checkSelfPermission()方法接受两个参数。第一个参数为Context对象,第二个参数为需要进行检查的权限,类型为String。返回值是一个int常量,返回PackageManager.PERMISSION_GRANTED表示权限已经被授予,返回PackageManager.PERMISSION_DENIED表示权限未被授予。if(ContextCompat.checkSelfPermission(this,Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED) {//权限未授予,调用requestPermission()申请权限}else{//权限已授予}3.如果权限未被授予,调用ActivityCompat.requestPermissions()申请权限:
requestPermissions()接受三个参数,第一个参数是Context对象,第二个参数是一个String数组,可以同时申请多个权限,第三个参数是请求码。ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA}, MY_REQUEST_CODE);4.重写Activity的onRequestPermissionsResult()处理申请回调:@Override
public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {switch (requestCode) {case MY_REQUEST_CODE: {if (grantResults.length > 0 &&grantResults[0] == PackageManager.PERMISSION_GRANTED) {//用户允许该权限} else {//用户拒绝该权限}return;}}
}

其中requestCode就是请求码,在这里就是上面的MY_REQUEST_CODE,permissions就是申请的权限,grantResults是请求的结果,数组大小与permissions对应。由于我们只请求了一个CAMERA权限,所以只需要看grantResults的第一个值就好了,根据结果做出相应的操作
比较好用的封装库RxPermission。

android 7.0
1:私有文件访问权限更改
2:多窗口支持(分屏显示)
3:通知增强功能
4:随时随地低电耗模式
5:多语言区域支持,更多语言
6:新增的表情符号
7:Chrome 和 WebView 配合使用
8:APK signature scheme v2

私有文件:
如果尝试传递 file:// Uri来访问其他应用的私有文件会触发 FileUriExposedException异常,分享私有文件内容的推荐方法是使用 FileProvider,FileProvider是v4包下的一个类,继承自ContentProvider。所以可以猜测通过FileProvider对外公开的uri就是content://开头的。

拍照后的文件

在 res/xml 目录下新建一个 xml 文件,用于存放应用需要共享的文件目录,这里我命名为file_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android"><external-files-pathname="my_images"path="./images/"/>
</paths>

name是自定义的一个别名,path是这个共享的目录,这里的path值表示共享外部私有目录file/images下的文件。如果是输入的是"."则表示共享外部私有目录下的file/目录下的所有文件。
其中元素有以下几个子节点:

:内部存储空间应用私有目录下的 files/ 目录,等同于 Context.getFilesDir() 所获取的目录路径
:内部存储空间应用私有目录下的 cache/ 目录,同于 Context.getCacheDir() 所获取的目录路径;
:外部存储空间根目录,等同于 Environment.getExternalStorageDirectory() 所获取的目录路径;
外部存储空间应用私有目录下的 files/ 目录,等同于 Context.getExternalFilesDir(null) 所获取的目录路径;
:外部存储空间应用私有目录下的 cache/ 目录,等同于 Context.getExternalCacheDir();

.在AndroidManifest中声明FileProvide:

  <providerandroid:name="android.support.v4.content.FileProvider"android:authorities="${applicationId}.FileProvider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/file_paths" /></provider>

authorities的名字可自定义,一般为包名+FileProvide,resource就是刚刚新建的共享文件

android 8.0 :
(1):通知渠道
(2):启动图标
(3):统一的布局外边距和内边距
(4):自动填充框架
(5):画中画模式
(6):多显示器支持
(7):媒体增强功能

通知渠道:
.创建通知渠道

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {NotificationChannel newsChannel = new NotificationChannel(CHANNEL_NEWS, "新闻",NotificationManager.IMPORTANCE_HIGH);NotificationChannel adsChannel = new NotificationChannel(CHANNEL_ADS, "广告",NotificationManager.IMPORTANCE_DEFAULT);NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);manager.createNotificationChannel(newsChannel);manager.createNotificationChannel(adsChannel);}

NotificationChannel对象就代表着一个通知渠道,构造方法接受三个参数,第一个参数是全局唯一的渠道id,String类型。第二个是渠道名称,注意这个名称给用户看的。第三个是通知的重要等级。这里我们调用createNotificationChannel()创建了两个渠道,新闻和广告。注意:通知渠道不会重复创建,创建过程可以放在Application中进行。运行上面的代码后,渠道就创建好了

public void sendNews(View view) {NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);Notification notification = new NotificationCompat.Builder(this, CHANNEL_NEWS).setContentTitle("法国获得2018世界杯冠军").setContentText("法国夺冠克罗地亚虽败犹荣比利时季军").setAutoCancel(true).build();manager.notify(1, notification);}public void sendAds(View view) {NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);Notification notification = new NotificationCompat.Builder(this, CHANNEL_ADS).setContentTitle("收到某新闻来自拼多多的广告").setContentText("这是它的广告内容...").setAutoCancel(true).build();manager.notify(1, notification);}public void sendNoChannel(View view) {NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);Notification notification = new NotificationCompat.Builder(this).setContentTitle("没有渠道的通知").setContentText("通内容").setAutoCancel(true).setSmallIcon(R.mipmap.ic_launcher).build();manager.notify(1, notification);}

作者:养生阿华田
来源:CSDN
原文:https://blog.csdn.net/weixin_38261570/article/details/81046352
版权声明:本文为博主原创文章,转载请附上博文链接!

android 9.0 :
App Actions
这个特性推荐使用AI进行操作。AI会尝试找出你接下来要做什么,以及你接下来需要什么,当你启动app抽屉时,它会告诉你。根据你的当前地理位置、一天中的某个时间段,甚至是你连接耳机的时候,向你推荐一些东西。还有位于应用程序抽屉中的快捷键可以预测你将要做什么,这样你就可以更快地完成你在手机上要做的事情。例如,如果你通常打开应用程序面板,然后打开手机应用程序,然后给你的好朋友打电话。在Android Pie上,你最终会看到打开这个应用程序后,就开始建议你给好友电话。

New gesture navigation(新的手势导航栏)
Manual rotation(手动旋转)
Security and privacy features(安全和隐私特性)

9.0 可参考 连接https://blog.csdn.net/hejjunlin/article/details/81489690

作者:逆流的鱼yuiop
来源:CSDN
原文:https://blog.csdn.net/hejjunlin/article/details/81489690
版权声明:本文为博主原创文章,转载请附上博文链接!

Android 6.0 ,7.0 ,8.0 ,9.0版本相关推荐

  1. Android 异常: failed to connect to localhost/127.0.0.1

    Android 异常: failed to connect to localhost/127.0.0.1 参考文章: (1)Android 异常: failed to connect to local ...

  2. 【错误记录】Android Studio 4.2.1 编译报错 ( Kotlin 版本推荐设置 1.5.0 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 将 Android Studio 版本升级成最新的 4.2.14.2.14.2.1 版本 , 出现如下错误 ; Build file 'D:\pro ...

  3. 关于Android studio3.0的坑之butterknife 7.0.1(低版本)

    关于Android studio3.0的坑之butterknife 7.0.1(低版本) 我们在AS3.0里面是无法直接使用butterknife 内库插件的,会报错,如下图: 接下来看看怎么设置呢? ...

  4. Android 集成支付宝支付,支付宝支付2.0

    成功起调支付宝支付 下载支付sdk复制到libs文件夹下并add  as library:https://docs.open.alipay.com/54/104509 1.首先申请支付宝 企业账户  ...

  5. Android 系统(268)---native保活5.0以下方案推演过程以及代码详述

    Android 进程常驻(3)----native保活5.0以下方案推演过程以及代码详述 这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取 ...

  6. Android 8.0 学习 (26)---Android8.0 Power Menu 添加截屏选项

    首先介绍下这个Power长按,显示Power Menu的流程,然后再介绍如何去添加一个新的选项,新的选项的功能是截屏. Power Menu长按的流程:  1.长按Power的处理在framework ...

  7. Android 8.0 学习(24)---Android8.0 WiFi热点适配

    Android8.0 WiFi热点适配 在Android8.0上用以前的方式调试WiFi热点的时候发现无法正常开启热点,于是查了下,发现之前的热点打开接口已经废弃.原先的接口WifiManager.j ...

  8. Android8.0 学习 (17)Android国际化(多语言)实现,支持8.0

    Android国际化(多语言)实现,支持8.0 前言 最近因为项目中使用了国际化,所以正好研究了下实现方法: 首先说下项目需求: 可以随着系统切换语言而切换语言,不支持的语言显示默认 用户可以选择语言 ...

  9. Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现

    周末升级了墨迹天气,看着引导界面做的不错,模仿一下,可能与原作者的代码实现不一样,但是实现的效果还是差不多的.先分享一篇以前的文章,android动画的基础知识,<Android UI开发第十二 ...

  10. Android Camera API 2使用OpenGL ES 2.0和GLSurfaceView对预览进行实时二次处理(黑白滤镜)

    这段时间有点忙,一直没时间写第三篇教程,其实代码很早之前就写好了.本系列教程会有三篇文章讲解Android平台滤镜的实现方式,希望在阅读本文之前先阅读前面两篇文档. 第一篇 Android Camer ...

最新文章

  1. RAID类型及软RAID的组建
  2. Dask.distributed创建client时出现报错
  3. Kafka 0.10.0文档翻译二
  4. Linux 文件 目录
  5. “出题老师”超全划重点,赛场高分必备干货!
  6. MS Expression Web中的Asp.net mvc(和其他网络编辑工具)
  7. 管理结果集和分析结果集
  8. Spring面试基础题
  9. 南京大学计算机学院冯新宇导师,中国科学技术大学计算机科学与技术专业硕士研究生导师冯新宇...
  10. 字符串的数组形式与指针形式
  11. 5.3LNA的拓扑结构
  12. 不存在有效_文水2单位存在安全隐患!
  13. JVM内存管理及垃圾回收机制
  14. L44.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- su和visudo
  15. 2G、 3G、 4G、5G的区别
  16. 五笔打字 五笔练习 86编码 字根 五笔字典 拆字 图解
  17. reactos操作系统实现(6)
  18. postman批量发送请求小记
  19. 数据库——完整性约束条件
  20. mysql中双引号和单引号有什么区别

热门文章

  1. tf.matmul使用注意点
  2. ck常见报错信息处理
  3. springboot+vue 个人健康信息管理系统
  4. 最小编辑距离(Minimum Edit Distance)
  5. Echarts——画图三步曲
  6. UE4喷气背包功能的实现--延续上篇自定义移动组件
  7. c++ list, vector, map, set 区别与用法
  8. hexo 设置多级目录,相关总结
  9. https之数字证书分析
  10. 基于java的五子棋游戏