Android 6.0 新特性

作者: 夜远曦白 | 来源:发表于2016-10-24 15:44 被阅读415次

    6.0系统全称为Marshmallow,Google 2015年I/O大会上正式发布,目前市场份额也在持续上涨,它有着众多模块的更新。

    主要更新模块

    • 电源管理(Android6.0 引入了下列特性来延长电池使用时间)
    • App Standby(应用待机)
      • 检测:当设备部充电,且在这时间内用户没有直接或间接的启动该应用。
      • 退出:当应用被激活时,或者设备充电时,系统将应用移除此状态。
    • Doze(瞌睡)
      • 检测:当设备不充电,且当设备静止且灭屏一段时间。
      • 周期:平台尝试让系统处于休眠状态,周期性地进入在一个维持窗口恢复正常操作,然后进入更长的休眠状态。
    • Exemptions(豁免)
      预装在设备上的系统应用和云消息服务,默认通常被豁免。应用开发者可以要求其应用使用这种设定。用户也可以在设置中来豁免某些应用。
    • App Link
      • 全称为应用程序链接。
      • 技术点:就是我们的隐式启动Intent。
      • Android更加鼓励应用程序间的关联而不再是单一的应用同浏览器的交互。
    • 指纹识别
      • 6.0 以前一直由各个手机制造厂商去研发。导致指纹识别不同的手机差异巨大。
      • 6.0 以后由Android系统提供API,硬件厂商只需提供相应的硬件支持即可。
    • 应用权限管理
      • 5.0 以前,只需要在manifest.xml中注册声明即可。
      • 5.0 以后,用户可以在安装的时候关闭某些权限。
      • 6.0 及以后,对于一些用户隐私权限总是会在第一次提示用户是否授予权限。

    权限机制详解

    • 优势
      • 新的权限机制更好的保护了用户的隐私。
      • 给了程序向用户说明权限的作用。
      • 可以防止一些恶意程序盗取用户或者手机信息,增强了Android系统的安全性。
    • 分类
      • Normal Premission
      • Dangerous Permission & Dangerous Premission Group
    • 概念
      如果你申请某个危险的权限,假设你的app早已被用户授权了同一组的某个危险权限,那么系统会立即授权,而不需要用户去点击授权。
    • 新增API
      • ContextCompact.checkSelfPermission( 检查当前APP是否具有某个权限)
      • ActivityCompact.requestPermissions()(如果没有某个权限,就使用此方法申请权限,由于ActivityCompact是继承自ContextCompact,所以也可以用ActivityCompact)
      • onRequestPermissionsResult()(申请权限是异步的,这是个回调来处理用户选择的结果,如果用户同意给权限,紧接着做授权成功的处理,若用户不同意授权,做授权失败的处理)
      • ActivityCompact.shouldShowRequestPermissionRationale(给用户解释此权限的用途,在用户拒绝授权才会出现)
    • 使用流程
      • 在AndroidManifest中添加需要的权限(不可省,还要适配6.0以下的系统)
      • 检查权限(检测危险权限)
      • 申请授权
      • 处理权限申请回调
    • Dangerous Permissions (危险权限都是一组一组的,如果申请某个危险的权限,假设app早已被用户授权了同一组的某个危险权限,那么系统会立即授权,而不需要用户去点击授权,注意,不要对权限组过多的依赖,尽可能对每个危险权限都进行正常流程的申请,因为谁知道后期的版本中这个权限组会不会发生点变化呢)
      • group:android.permission-group.CONTACTS
        • permission:android.permission.WRITE_CONTACTS
        • permission:android.permission.GET_ACCOUNTS
        • permission:android.permission.READ_CONTACTS
    • group:android.permission-group.PHONE
      • permission:android.permission.READ_CALL_LOG
      • permission:android.permission.READ_PHONE_STATE
      • permission:android.permission.CALL_PHONE
      • permission:android.permission.WRITE_CALL_LOG
      • permission:android.permission.USE_SIP
      • permission:android.permission.PROCESS_OUTGOING_CALLS
      • permission:com.android.voicemail.permission.ADD_VOICEMAIL
    • group:android.permission-group.CALENDAR
      • permission:android.permission.READ_CALENDAR
      • permission:android.permission.WRITE_CALENDAR
    • group:android.permission-group.CAMERA
      • permission:android.permission.CAMERA
    • group:android.permission-group.SENSORS
      • permission:android.permission.BODY_SENSORS
    • group:android.permission-group.LOCATION
      • permission:android.permission.ACCESS_FINE_LOCATION
      • permission:android.permission.ACCESS_COARSE_LOCATION
    • group:android.permission-group.STORAGE
      • permission:android.permission.READ_EXTERNAL_STORAGE
      • permission:android.permission.WRITE_EXTERNAL_STORAGE
    • group:android.permission-group.MICROPHONE
      • permission:android.permission.RECORD_AUDIO
    • group:android.permission-group.SMS
      • permission:android.permission.READ_SMS
      • permission:android.permission.RECEIVE_WAP_PUSH
      • permission:android.permission.RECEIVE_MMS
      • permission:android.permission.RECEIVE_SMS
      • permission:android.permission.SEND_SMS
      • permission:android.permission.READ_CELL_BROADCASTS
    • 代码实践
    Demo核心代码

    只要按照使用流程去在代码中请求权限,就能解决6.0手机权限问题,只是在真正项目中每个危险权限一个个去请求,代码重复性就比较高,于是就需要对此进行一次封装,Github上面有不少封装好的权限请求,使用方法就到每个链接去看吧,很简单的,当然也可以自己在自己项目中封装啦。

    1. MPermissions a easy API to use runtime permission for Android M
    2. PermissionGen Android API easy to use permission for Android M
    3. RxPermissions Android runtime permissions powered by RxJava

    还有一篇写的很好的博客介绍运行权限的 Android 6.0运行时权限详解

    相关文章

      网友评论

      本文标题:Android 6.0 新特性

      本文链接:https://www.haomeiwen.com/subject/pxifuttx.html