2011-09-06 102 views
2

我正在使用ELCImagePickerController从照片库中检索照片。在ipad模拟器中可以正常显示来自照片库的照片。但它不适用于iPad设备。无法从ipad设备中的照片库中检索照片

这表明失败错误意味着没有照片,即使设备有照片。

我用下面

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

作品模拟器,但不适用于ipad的设备。

有人可以回复,那里有什么问题。

在此先感谢。

+1

您的'assetGroupEnumberatorFailure'块收到的实际错误是什么? – Anomie

+0

Hi Anomie,该消息在警报中显示为 - >相册错误:错误域:ALAssetsLibraryErrorDomain代码= -3311“用户拒绝访问”UserInfo = 0x147180 {NSLocalizedFailureReason =用户拒绝应用程序访问其媒体。,NSLocalizeddescription =用户被拒绝访问} ..我知道这意味着照片库中没有照片。但我的设备中有照片。你能告诉我为什么如果你知道 –

回答

5

您正在接收的错误消息通过拒绝对位置服务的访问,表示用户拒绝您的程序访问照片库。由于某些未知原因,Apple使用位置服务权限来通过AssetsLibrary框架控制对照片库的访问。进入“设置”应用程序并确保位置服务处于打开状态,并且允许您的应用程序使用。

我对他们为什么这样做的猜测是,他们担心某些应用程序可能以某种方式绕过定位服务,通过从库中加载所有照片并寻找EXIF地理标记数据而被拒绝。

+0

谢谢阿诺米,你帮了很多。现在它正在工作 –

+0

但是如何知道位置服务所在的用户是否有办法避免这种情况? –

+2

@Chakradhar:你可以使用[CLLocationManager](http://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html)对事物有更多的控制,但主要你只需要检查你是否得到了一个带有“ALAssetsLibraryErrorDomain”域和代码“ALAssetsLibraryAccessUserDeniedError”或者“ALAssetsLibraryAccessGloballyDeniedError”的NSError。 – Anomie