我需要在某些在 surfaceview
中显示相机预览的 Activity 中请求相机和位置权限。
我需要把请求权限函数放在哪里? onCreate、onResume 还是 onSurfaceCreated?
我需要在哪里设置相机?
最佳答案
如果请求服务而权限不可用,请参阅请求权限直接对应于应用程序崩溃。 我更愿意将权限放在 onResume 中,因为无论用户操作变成什么,例如最小化或屏幕顶部出现电池电量不足的对话框,我们都需要再次检查权限更改,以便您的 Activity 更改可能是由于任何原因发生的。摄像头在网络请求后尝试打开或者是什么情况。
将摄像头检查权限放在onResume中。
那么让我们谈谈您将如何做。 有许多看法。我更喜欢做的是 我创建了一个 Helper 类,它让我知道此代码的权限状态
class PermissionsHelper(activity: Activity) {
private val activity: Context
init { this.activity = activity }
fun isCameraPermissionAvailable()=ActivityCompat.checkSelfPermission(activity, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
因此,在您的 Activity 的 onResume 方法中检查权限是否可用,否则请求权限。
override fun onResume() {
super.onResume()
if (!PermissionsHelper(this).isCameraPermissionAvailable()) {
requestPermissions(arrayOf(Manifest.permission.CAMERA), CAMERA_REQUEST_CODE)
}
}
另外请注意两点
1) You should write permission for camera in manifeast so that app can request the permission
2) Check if the camera permission is available or not before opening the camera, if not you should again request for the permission
(与onResume阶段相同)
关于java - 在哪里放置相机请求权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54264683/