最新版方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//定义权限请求启动器
private val requestPermissionLauncher=registerForActivityResult(
ActivityResultContracts.RequestPermission()
){ isGranted->
if(isGranted){
init()
}else{
Toast.makeText(requireContext(), "需要录音权限才能进行对话", Toast.LENGTH_SHORT).show()
}

}
//检查并触发
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//检查权限
checkSelfPermission()
}
//获取权限
private fun checkSelfPermission(){
when{
ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.RECORD_AUDIO)== PackageManager.PERMISSION_GRANTED->{
init()
}
else->{
requestPermissionLauncher.launch(Manifest.permission.RECORD_AUDIO)
}
}
}

传统方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 检查权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO)
!= PackageManager.PERMISSION_GRANTED
) {
// 请求权限
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.RECORD_AUDIO), 100)
} else {
init()
}

// 重写结果回调
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == 100) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
init()
} else {
Toast.makeText(this, "需要录音权限才能进行对话", Toast.LENGTH_SHORT).show()
}
}
}