Day 23 | 录音权限

权限请求

当需要取得敏感资料或操作装置硬体设备时,需要在专案中设定相关权限,而系统会根据权限的重要性来选择是否自动允许或询问使用者。

以录音程序为例,开发者需在AndroidManifest.xml档中加入录音的相关权限,摆放位置如图。

<uses-permission android:name="android.permission.RECORD_AUDIO" />

Untitled

因为录音属於重要权限,所以要在程序码中确认使用者是否给予权限,若未经过使用者同意就使用录音相关功能,会造成应用程序崩溃

//Step1:宣告录音权限
val permission = android.Manifest.permission.RECORD_AUDIO
//Step2:确认使用者是否以允许,第一个参数为使用的对象,第二个参数为确认的权限内容,若允许则执行後续的录音流程,否则向使用者要求权限
if (ActivityCompat.checkSelfPermission(this, permission) 
		!= PackageManager.PERMISSION_GRANTED){
		//Step3:向使用者要求权限,第一个参数为使用的对象,第二个参数为权限的内容(需传array),第三个为识别标签
		ActivityCompat.requestPermissions(this, arrayOf(permission), 0)
} else {
		//...已经允许录音了,这边写录音流程
}

//Step4:回传授权要求後的结果
override fun onRequestPermissionResult(
		requestCode: Int,
		permissions: Array<out String>,
		grantResult: IntArray
){
		//Step5:判断是否有结果且识别标签相同
		if (grantResults.isNotEmpty() && requestCode == 0){
		  //Step6:取出结果并判断是否允许权限
			val result = grantResult[0]
			if (result == PackageManager.PERMISSION_DENIED)
					//拒绝给予录音权限时给的处理
			else {
					//已允许录音权限所以执行後续录音过程
			}
		}
}

<<:  Day8 AR的硬体设备,简洁介绍LCD与OLED

>>:  连续 30 天 玩玩看 ProtoPie - Day 8

[2020铁人赛] Day27 - 部署与相关设定

本章主要介绍将ASP.NET Core网站给发行上IIS服务器,我们可以用Visual Studio...

[Day11] 策略最佳化模组改造(1)

先讲一下接下来几天的目标,目前在最佳化的时候会需要针对每一支不同的策略写一次最佳化函数,这在未来使用...

利用 Grafana Operator 部署 Grafana 到 OpenShift,并建立客制化的 Dashboard。

在前篇文章中,我已经将 Grafana Operator 部署到 "brandon&quo...

Python - Python num2words 套件 - 将数字转换为多种语言的单词 - 参考笔记

Python - Python num2words 套件 - 将数字转换为多种语言的单词 - 参考笔...

JavaScript学习日记 : Day3 - 基本型别(一)

1. 型别总览 JavaScript中的数据都是有型别的,共有八种型别: 数字(Number) 字串...