授予权限后两种方法 运行

Both methods run after permissions granted

我正在使用 Google 的 EasyPermissions 库。在我的应用程序中,我有两个按钮,一个用于录制视频,一个用于捕获图像。由于两者都需要相机权限,因此它们都带有 @AfterPermissionGranted.

注释

所以我录制视频的方法是这样的:

@Override
@AfterPermissionGranted(RC_CAMERA_PERM)
public void openCameraToRecordVideo() {
    if (EasyPermissions.hasPermissions(this, Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// Code here
}

拍照也类似:

@Override
@AfterPermissionGranted(RC_CAMERA_PERM)
public void openCameraToCaptureImage() {
    if (EasyPermissions.hasPermissions(this, Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// Code here
}

它们都带有权限注释,因为我不知道哪个用户会先点击。

当用户单击一个按钮并接受权限时会发生什么,然后两个方法运行一个接一个。这显然不是我想要的行为。

对于如何处理这种情况的任何帮助,我将不胜感激。 谢谢。

实际上,您正在做的是使用不同的函数名称请求相同的权限两次,因此删除 openCameraToCaptureImage() 方法或 openCameraToRecordVideo() 方法。

从两个 openCameraX 函数中删除 AfterPermissionGranted。定义了一个私有字段 lastAction。使用 AfterPermissionGranted 注释编写一个新函数 openCamera,检查是否设置了 lastAction,如果是,则调用相关函数。在每个openCameraX中,检查是否有相机权限,如果没有,更新lastAction并开始请求相机权限。