ELCImagePickerController без предоставления доступа к местоположению пользователя - PullRequest
1 голос
/ 05 августа 2011

Я использовал ELCImagePickerController в моем приложении.но когда мы запускаем наше приложение в первый раз и в галерее изображений, оно будет запрашивать доступ к местоположению пользователя, если мы не разрешаем доступ к местоположению пользователя к нему, тогда оно выдаст ошибку в UIAlertView и не будет отображать галерею изображений.

Но после этого, если мы перейдем к настройке приложения -> службы определения местоположения -> [включить переключатель для доступа к нашему приложению], затем запустите приложение -> перейдите на страницу галереи -> мы сможем показать галерею изображений в нашем приложении.

Так что мой вопрос в том, как мы можем показать галерею изображений с ELCImagePickerController с отключенными службами определения местоположения для нашего приложения, или пользователь не может получить доступ к местоположению в нашем приложении.ELCImagePickerController может быть загружен на этом LINK

Затем найдите файл ELCAlbumPickerController.m, затем перейдите к View Did Load, тогда это вызывает предупреждение об ошибке, когда доступ к местоположению пользователя отключен,

    dispatch_async(dispatch_get_main_queue(), ^
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    // Group enumerator Block
    void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) 
    {
        if (group == nil) 
        {
            return;
        }

        [self.assetGroups addObject:group];

        // Keep this line!  w/o it the asset count is broken for some reason.  Makes no sense
        NSLog(@"count: %d", [group numberOfAssets]);

        // Reload albums
        [self performSelectorOnMainThread:@selector(reloadTableView) withObject:nil waitUntilDone:YES];
    };

    // Group Enumerator Failure Block
    void (^assetGroupEnumberatorFailure)(NSError *) = ^(NSError *error) {

        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"Album Error: %@", [error description]] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alert show];
        [alert release];

        NSLog(@"A problem occured %@", [error description]);                                     
    };  

    // Enumerate Albums
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];        
    [library enumerateGroupsWithTypes:ALAssetsGroupAll
                           usingBlock:assetGroupEnumerator 
                         failureBlock:assetGroupEnumberatorFailure];


    [library release];
    [pool release];
});    

1 Ответ

2 голосов
/ 07 августа 2011

Ответ заключается в том, что вы не можете отобразить галерею изображений с ELCImagePickerController с отключенными службами определения местоположения.

ELCImagePickerController использует Framework библиотеки ресурсов для доступа к фотоальбому устройства. Поскольку эта структура также предоставляет доступ к метаданным фотографий, включая данные о местоположении, пользователь должен предоставить приложению разрешение на использование служб определения местоположения.

Нет никакого способа обойти это, кроме случаев, когда вы используете стандартный UIImagePickerController (но я предполагаю, что это не будет соответствовать требованиям для вашего приложения)

...