2016-05-15 13 views
4

我正在使用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 
} 

他們都標註有權限,因爲我不知道是哪一個用戶會先點擊一下。

當用戶點擊一個按鈕並接受權限然後兩個方法一個接一個運行時會發生什麼。這顯然不是我想要的行爲。

我真的很感謝有關如何處理這種情況的任何幫助。 謝謝。

回答

1

從openCameraX函數中刪除AfterPermissionGranted。定義一個私人字段lastAction。用AfterPermissionGranted註解來寫一個新函數openCamera,檢查是否設置了lastAction,如果是,則調用相關函數。在每個openCameraX中,檢查您是否擁有攝像頭權限,如果沒有,請更新lastAction並啓動請求攝像頭權限。

+0

這幾乎是我最終做的。我添加了兩個布爾字段:'recordVideo'和'captureImage',並基於哪個按鈕被點擊,我將適當的字段設置爲true。然後,當'openCamera()'運行時,我檢查哪個字段是真實的,並啓動相應的openCameraXXX函數。感謝您的回答。 – Mes

1

其實你正在做的是用不同的函數名稱兩次詢問相同的權限,所以刪除openCameraToCaptureImage()方法或openCameraToRecordVideo()方法。