Android6.0特性及适配

 1、运行时权限

权限组权限
日历:CALENDARandroid.permission.READ_CALENDAR
android.permission.WRITE_CALENDAR
相机:CAMERAandroid.permission.CAMERA
通讯录:CONTACTSandroid.permission.READ_CONTACTS
android.permission.WRITE_CONTACTS
android.permission.GET_ACCOUNTS
位置:LOCATIONandroid.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION
录音:MICROPHONEandroid.permission.RECORD_AUDIO
电话:PHONEandroid.permission.READ_PHONE_STATE
android.permission.CALL_PHONE
android.permission.READ_CALL_LOG
android.permission.WRITE_CALL_LOG
android.permission.ADD_VOICEMAIL
android.permission.USE_SIP
android.permission.PROCESS_OUTGOING_CALLS
传感器:SENSORSandroid.permission.BODY_SENSORS
信息:SMSandroid.permission.SEND_SMS
android.permission.RECEIVE_SMS
android.permission.READ_SMS
android.permission.RECEIVE_WAP_PUSH
android.permission.RECEIVE_MMS
存储:STORAGEandroid.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

(1)检查权限:checkSelfPermission(String permission)

(2)请求权限:requestPermissions(String[] permissions, int requestCode)

(3)请求结果:onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)

class HomeActivity : AppCompatActivity() {
    private val mAllPermission = arrayOf(Manifest.permission.CAMERA,
            Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)//所有权限
    private val REQUEST_CODE_PERMISSION = 1000

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_home)
        checkPremission(mAllPermission)
    }

    //检查权限
    private fun checkPremission(permission: Array<out String>){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
            val requestPermissionList = ArrayList<String>()
            permission.forEach {
                if (checkSelfPermission(it) != PackageManager.PERMISSION_GRANTED){
                    //需要请求的权限
                    requestPermissionList.add(it)
                }
            }
            if (requestPermissionList.size > 0){
                //申请权限
                requestPermissions(requestPermissionList.toTypedArray(), REQUEST_CODE_PERMISSION)
            }
        }
    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        //申请权限结果
        if (requestCode == REQUEST_CODE_PERMISSION){
            checkPremission(permissions)
        }
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
    }
}

注:6.0~8.0权限组有一个权限授权通过,则整个权限组都被授权,8.0之后同组其他权限不会默认授权,但当这些同组其他权限调用申请授权时则会自动批准不会再弹框授权。

2、移除Apache Http相关库,如果需要使用HttpClient需要build.gradle文件android中声明依赖

android{
  useLibrary 'org.apache.http.legacy'
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值