Android6.0新特性

Marshmallow

    主要更新新特性:

    1.电源管理

            ~App Standby(应用待机)

                检测:当设备不充电,且这段时间内没有用户直接或间接启动该应用

                退出:应用激活或者设备充电时,退出应用待机

           ~Doze

                  检测:当设备不充电,且设备静止或灭屏一段时间。

                  周期:平台尝试让系统处于休眠状态,周期性的进入在一个维持窗口恢复正常操作,然后进入更长的休眠状态

    2.App Link

                   应用连接,,其实就是隐式Intent Android更加鼓励应用程序之间的关联,而不是应用于浏览器之间的关联

    3.指纹识别

                     统一指纹之别API 解决各大厂商指纹识别API 差异巨大问题

    4.应用权限管理

                 5.0以前只需在manifest.xml中注册声明即可

                 5.0以后,用户可在安装的时候关闭部分权限

                 6.0以后,对一些隐私权限总会在第一次提示用户是否授权

   权限组:如果申请某个危险的权限,假设APP早已经被用户授权了一组的某个危险权限,那么系统会立即授权,不需要用户再次授权。

    动态权限的处理:    

            新增API:

        Android6.0新特性_第1张图片

       处理流程:

           1.在manifest中添加需要的权限

           2.检查权限

           3.申请授权

           4.处理权限申请回调

    adb shell pm list permissions -d -g(查看危险权限组)

    动态权限封装:

open class BaseActivity : AppCompatActivity() {

    companion object {
        val CALL_PHONE = 0x01
    }


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }

    fun hasPermission(vararg permissions: String): Boolean {
        permissions.forEach {
            if (ContextCompat.checkSelfPermission(this, it) != PackageManager.PERMISSION_GRANTED) {
                return false
            }
        }
        return true
    }

    fun requestPermissions(code: Int, vararg permissions: String) {
        ActivityCompat.requestPermissions(this, permissions, code)
    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {
        when (requestCode) {
            CALL_PHONE-> if(PackageManager.PERMISSION_GRANTED==grantResults[0]){
                doCallPhone()
            }else{
                Toast.makeText(this,"權限被禁止!",Toast.LENGTH_SHORT).show()
            }


        }
    }

    /**
     * 默认打电话权限处理
     */
    open fun doCallPhone(){

    }
}

使用第三方依赖权限申请库:

 compile 'com.lovedise:permissiongen:0.0.6'

class MainActivity : Activity(), View.OnClickListener {
    override fun onClick(p0: View?) {
        when (p0) {
            this.findViewById

你可能感兴趣的:(Android6.0新特性)