1、运行时权限
权限组 | 权限 |
日历:CALENDAR | android.permission.READ_CALENDAR |
android.permission.WRITE_CALENDAR | |
相机:CAMERA | android.permission.CAMERA |
通讯录:CONTACTS | android.permission.READ_CONTACTS |
android.permission.WRITE_CONTACTS | |
android.permission.GET_ACCOUNTS | |
位置:LOCATION | android.permission.ACCESS_FINE_LOCATION |
android.permission.ACCESS_COARSE_LOCATION | |
录音:MICROPHONE | android.permission.RECORD_AUDIO |
电话:PHONE | android.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 | |
传感器:SENSORS | android.permission.BODY_SENSORS |
信息:SMS | android.permission.SEND_SMS |
android.permission.RECEIVE_SMS | |
android.permission.READ_SMS | |
android.permission.RECEIVE_WAP_PUSH | |
android.permission.RECEIVE_MMS | |
存储:STORAGE | android.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'
}