以請求 Camera 權限為例,只處理權限,不處理相機功能。

內容目錄

在 AndroidManifest.xml 宣告使用權限

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

在執行時期檢查是否具有權限

fun hasPermission():Boolean {
    val permission = ActivityCompat.checkSelfPermission(this,
        android.Manifest.permission.CAMERA)
    return permission == PackageManager.PERMISSION_GRANTED
}

在執行時期向使用者要求權限

fun requestPermission() {
    ActivityCompat.requestPermissions(this,
        arrayOf(android.Manifest.permission.CAMERA),
        REQUEST_CAMERA_PERMISSION
    )
}

處理使用者對權限請求的回應

override fun onRequestPermissionsResult(
    requestCode: Int,
    permissions: Array<out String>,
    grantResults: IntArray
) {
    if(requestCode == REQUEST_CAMERA_PERMISSION) {
        if(grantResults.isNotEmpty()> 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            enableCamera()
        } else {
            Toast.makeText(this, "必須許可,才能使用相機", Toast.LENGTH_SHORT).show()
        }
    }
}

使用內建相機

override fun onRequestPermissionsResult(
    requestCode: Int,
    permissions: Array<out String>,
    grantResults: IntArray
) {
    if(requestCode == REQUEST_CAMERA_PERMISSION) {
        if(grantResults.isNotEmpty()> 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            enableCamera()
        } else {
            Toast.makeText(this, "必須許可,才能使用相機", Toast.LENGTH_SHORT).show()
        }
    }
}

參考資料

Google developers Guide: Permission

Last modified: 2022 年 10 月 14 日

Author

Comments

Write a Reply or Comment

Your email address will not be published.