我正在使用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
}
它们都带有权限注释,因为我不知道哪个用户会先点击。
当用户点击一个按钮并接受权限然后两个方法一个接一个地运行时,会发生什么。这显然不是我想要的行为。
我非常感谢有关如何处理这种情况的任何帮助。 谢谢。
答案 0 :(得分:1)
实际上,您所做的是使用不同的函数名称两次请求相同的权限,因此请删除openCameraToCaptureImage()
方法或openCameraToRecordVideo()
方法。
答案 1 :(得分:1)
从openCameraX函数中删除AfterPermissionGranted。定义了一个私有字段lastAction。使用AfterPermissionGranted注释编写一个新函数openCamera,检查是否设置了lastAction,如果是,则调用相关函数。在每个openCameraX中,检查您是否拥有相机权限,如果没有,请更新lastAction并开始请求相机权限。