【问题标题】:ELCImagePickerController without allowing access to user locationELCImagePickerController 不允许访问用户位置
【发布时间】:2011-08-05 13:10:48
【问题描述】:

我在我的应用程序中使用了 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];
});    

【问题讨论】:

    标签: iphone objective-c xcode image-gallery alasset


    【解决方案1】:

    答案是,在位置服务关闭的情况下,您无法使用 ELCImagePickerController 显示图片库。

    ELCImagePickerController 使用 Assets Library Framework 来访问设备的相册。由于此框架还允许访问照片的元数据(包括位置数据),因此用户需要授予应用使用定位服务的权限。

    没有办法解决这个问题,除非您使用标准 UIImagePickerController(但我认为这不会满足您应用的要求)

    【讨论】:

    • 如果用户拒绝访问,它不会从资产加载图像,但我想在他加载 ELCImagePickerController 时再次询问访问权限,我该怎么做呢
    猜你喜欢
    • 2017-11-12
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2017-06-21
    相关资源
    最近更新 更多