Как проверить, имеет ли приложение доступ к галерее телефона?

У меня есть приложение, в котором я делаю снимок с камерой и сохраняю это изображение в собственной галерее. Но если у приложения нет разрешения на это, я хочу, чтобы пользователь это знал. Итак, как я могу проверить его?

Кстати: я храню изображение в галерее с помощью:

UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

Ответ 1

Вам нужно проверить статус ALAssetLibrary убедитесь, что в вашем файле AssetsLibrary/AssetsLibrary.h

  ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];

//проверить статус для ALAuthorizationStatusAuthorized или ALAuthorizationStatusDenied e.g

    if (status != ALAuthorizationStatusAuthorized) {
        //show alert for asking the user to give permission

    }

Ответ 2

Примечание: только iOS 6

Это то, что вы ищете

[ALAssetsLibrary authorizationStatus] == ALAuthorizationStatusAuthorized;

Другие значения authorizationStatus:

ALAuthorizationStatusRestricted,        // This application is not authorized to access photo data.
                                            // The user cannot change this application’s status, possibly due to active restrictions
                                            //  such as parental controls being in place.
    ALAuthorizationStatusDenied,            // User has explicitly denied this application access to photos data.
    ALAuthorizationStatusAuthorized         // User has authorized this application to access photos data.

Ответ 3

Если вы используете фреймворк, поскольку библиотеки ALAsset устарели от ios 9, вы можете использовать PHAuthorizationStatus для проверки доступа галереи. Вам также нужно импортировать фреймворк.

  #import <Photos/Photos.h>

- (BOOL)hasGalleryPermission
{
    BOOL hasGalleryPermission = NO;
    PHAuthorizationStatus authorizationStatus = [PHPhotoLibrary authorizationStatus];

    if (authorizationStatus == PHAuthorizationStatusAuthorized) {
        hasGalleryPermission = YES;
    }
    return hasGalleryPermission;
}

Ответ 4

Swift 3

import photos

PHPhotoLibrary.requestAuthorization { status in
     switch status {
     case .authorized:
          self.processSnapShotPhotos()
     case .restricted:
          print("handle restricted")
     case .denied:
          print("handle denied")     
     default:
       // place for .notDetermined - in this callback status is already determined so should never get here
            break
     }
}