private val REQUEST_CODE_PERMISSION_LOCATION=2//请求位置许可private val REQUEST_EXTERNAL_STORAGE: Int =1private val PERMISSIONS_STORAGE: Array<String>=arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
val permissions =arrayOf(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)//定位,读写权限
val permissionDeniedList: MutableList<String>=ArrayList()for(permission in permissions){
val permissionCheck: Int = ContextCompat.checkSelfPermission(this, permission)if(permissionCheck == PackageManager.PERMISSION_GRANTED){onPermissionGranted(permission)//授予权限许可}else{
permissionDeniedList.add(permission)}}if(permissionDeniedList.isNotEmpty()){
val deniedPermissions =
permissionDeniedList.toTypedArray()
ActivityCompat.requestPermissions(this,
deniedPermissions,REQUEST_CODE_PERMISSION_LOCATION)}
授予权限许可
onPermissionGranted
private fun onPermissionGranted(permission: String){when(permission){
Manifest.permission.ACCESS_FINE_LOCATION->//如果Android 系统6.0以上,GPS未打开if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.M&&!checkGPSIsOpen()){
AlertDialog.Builder(this).setTitle("提示").setMessage("当前扫描蓝牙需要打开定位功能").setNegativeButton("取消"){ _, _ ->finish()}.setPositiveButton("设置"){ _, _ ->
val intent =Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)startActivityForResult(intent,REQUEST_CODE_OPEN_GPS)}.setCancelable(false).show()}
Manifest.permission.WRITE_EXTERNAL_STORAGE->
ActivityCompat.requestPermissions(this,PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE)}}
判断GPS是否打开
private fun checkGPSIsOpen(): Boolean {
val locationManager =this.getSystemService(Context.LOCATION_SERVICE)as LocationManager
?:returnfalsereturn locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)}