iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0

權限請求

當需要取得敏感資料或操作裝置硬體設備時,需要在專案中設定相關權限,而系統會根據權限的重要性來選擇是否自動允許或詢問使用者。

以錄音程式為例,開發者需在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 {
					//已允許錄音權限所以執行後續錄音過程
			}
		}
}

上一篇
Day 22 | 使用相機獲取影像
下一篇
Day 24 | Service
系列文
社畜轉行之旅,30天Kotlin學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言