2016-05-15 9 views
4

私はGoogleのEasyPermissionsライブラリを使用しています。私のアプリでは、ビデオを録画するボタンと画像をキャプチャするボタンの2つのボタンがあります。どちらもカメラ権限を必要とするため、両方とも@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 
} 

私はあろう一人のユーザーがわからないので、彼らは両方の権限でアノテートされている

ので、映像を記録するために、私の方法は、このようになります。最初にクリックします。

ユーザーがボタンを1つクリックしてアクセス権を受け入れると、の両方がメソッドを順番に実行します。明らかに私が望む行動ではありません。

このような状況を処理する方法については、本当に助けていただきたいと思います。 ありがとうございます。

答えて

1

AfterPermissionの両方をopenCameraX関数から削除します。プライベートフィールドlastActionを定義しました。 LastActionが設定されていることを確認するAfterPermissionGrantedアノテーションを付けてopenCameraという新しい関数を作成し、そうであれば関連する関数を呼び出します。各openCameraXで、カメラ権限があるかどうかをチェックし、そうでない場合はlastActionを更新してカメラ権限を要求します。

+0

これは私が最終的に行ったことです。 2つのブール型フィールド、 'recordVideo'と' captureImage'を追加しました。どのボタンがクリックされたかに基づいて、適切なフィールドをtrueに設定しました。そして 'openCamera()'が実行されるとき、どのフィールドが真であるかをチェックし、適切なopenCameraXXX関数を開始します。ご回答有難うございます。 – Mes

1

実際には、同じアクセス権を異なる関数名で2回尋ねているので、openCameraToCaptureImage()メソッドまたはopenCameraToRecordVideo()メソッドを削除してください。

関連する問題