2011-08-05 204 views
1

我在我的应用程序中使用了ELCImagePickerController。 但是当我们第一次启动我们的应用程序并且在图片库时,它会要求访问用户位置,如果我们不允许访问用户位置,那么它会在UIAlertView中给出错误,并且它不会显示图片库。ELCImagePickerController不允许访问用户位置

但之后,如果我们去设置应用程序 - >位置服务 - > [打开开关为我们的应用程序的访问位置],然后启动应用程序 - >去画廊页面 - >我们可以在我们的应用程序中显示图片库。

所以我的问题是我们如何显示图像库与ELCImagePickerController位置服务关闭我们的应用程序或用户不允许访问我们的应用程序的位置。 ELCImagePickerController可以下载这个LINK

然后找ELCAlbumPickerController.m文件,然后去查看有没有再加载这会导致错误的警报,当用户访问位置关闭,

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]; 
});  

回答

2

的答案是,你可以” t显示带有位置服务关闭的ELCImagePickerController的图像库。

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

有没有办法解决这个,除非你使用标准的UIImagePickerController如果用户拒绝访问(但我认为不会支付你的应用程序的要求)

+0

,它不会加载图片来自资产,但是当我加载ELCImagePickerController时我想再次请求访问权限,我怎么能做到这一点 –

相关问题