在哪里放置相机的请求权限?

我需要在某些显示相机预览的活动中请求相机位置surfaceview许可。

我需要把请求权限功能放在哪里?onCreateonResume还是onSurfaceCreated

我需要在哪里设置相机?


慕侠2389804
浏览 115回答 3
3回答

慕妹3146593

见请求权限直接对应应用程序崩溃如果请求服务并且权限不可用。我更愿意将权限放在 onResume 中,因为无论用户操作变成什么,例如最小化或电池电量不足对话框出现在屏幕顶部,我们都需要再次检查权限更改,以便您的活动更改可能是由于任何原因而发生的。在网络请求或情况如何之后,摄像头正在尝试打开。将相机检查权限放在onResume中。所以让我们谈谈你会怎么做。有几种看法。我更喜欢做的是创建一个Helper类,让我知道这段代码的权限状态class PermissionsHelper(activity: Activity) {private val activity: Contextinit { this.activity = activity }fun isCameraPermissionAvailable()=ActivityCompat.checkSelfPermission(activity, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED}}因此,在您的活动的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 permission2) Check if the camera permission is available or not before opening the camera, if not you should again request for the permission(与 onResume 阶段相同)

素胚勾勒不出你

首先,在清单文件中定义权限。在java文件中,您必须在运行时使用 再次请求权限checkSelfPermission。这是非常必要的,因为如果您的用户没有授予他将无法访问相机的权限。当您希望相机实际显示时,您应该编写此代码以及与相机相关的所有功能。例如,如果有一个按钮说,Open Camera那么首先检查用户是否授予权限,然后打开相机。

千万里不及你

根据Android 文档,请求许可的最相关的地方可能是每次执行需要该权限的操作时。这种建议背后的原因是从 Android 6.0(API 级别 23)开始,用户可以随时撤销任何应用程序的权限。因此,即使应用程序昨天使用了相机,它也不能假设它今天仍然拥有该权限。因此,应用程序必须每次都“检查”权限,以执行需要该权限的操作。您可以在用户授予使用相机的权限“之后”设置相机和其他操作。如果用户通过覆盖授予权限,您可以检查状态onRequestPermissionsResult@Overridepublic void onRequestPermissionsResult(int requestCode,        String permissions[], int[] grantResults) {    switch (requestCode) {        case MY_PERMISSIONS_REQUEST_CAMERA: {            // If request is cancelled, the result arrays are empty.            if (grantResults.length > 0                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                // permission was granted, yay! Do the                // camera-related task you need to do.            } else {                // permission denied, boo! Disable the                // functionality that depends on this permission.            }            return;        }        // other 'case' lines to check for other        // permissions this app might request.    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java