Android 这两种方法都在授予权限后运行

Android 这两种方法都在授予权限后运行,android,android-permissions,Android,Android Permissions,我正在使用谷歌的EasyPermissions库。在我的应用程序中,我有两个按钮,一个用于录制视频,一个用于捕获图像。由于两者都需要相机权限,因此都用@afterpermissiongrated注释 因此,我录制视频的方法如下所示: @Override @AfterPermissionGranted(RC_CAMERA_PERM) public void openCameraToRecordVideo() { if (EasyPermissions.hasPermissions(this

我正在使用谷歌的EasyPermissions库。在我的应用程序中,我有两个按钮,一个用于录制视频,一个用于捕获图像。由于两者都需要相机权限,因此都用
@afterpermissiongrated
注释

因此,我录制视频的方法如下所示:

@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函数中删除授予的AfterPermissions。定义了一个私有字段lastAction。编写一个新函数openCamera,该函数带有AfterPermissionPermited注释,用于检查是否设置了lastAction,如果设置了,则调用相关函数。在每个openCameraX中,检查您是否拥有摄像头权限,如果没有,则更新lastAction并启动request camera权限。

这就是我最后所做的。我添加了两个布尔字段:
recordVideo
captureImage
,并根据单击的按钮将相应字段设置为true。然后当
openCamera()
运行时,我检查哪个字段为true,并启动相应的openCameraXXX函数。谢谢你的回答。