我正在使用资产库从url获取图片,我的代码是
ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset){
ALAssetRepresentation *rep = [myasset defaultRepresentation];
CGImageRef iref = [rep fullResolutionImage];
UIImage *largeimage;
if (iref) {
largeimage = [UIImage imageWithCGImage:iref];
}
[self customeButtonCreated:self];
NSData* thumbImageData = [[NSData alloc] initWithContentsOfFile:imagePath];
btn1.frame = CGRectMake(x, y, WIDTH, HEIGHT);
[btn1 setTag:tag];
//[media_id addObject:[allKey objectAtIndex:0]];
[btnURl addObject:imagePath];
UIImage *tempImage = [[UIImage alloc]initWithData:thumbImageData];
[btn1 setImage:largeimage forState:UIControlStateNormal];
btn1.imageView.contentMode = UIViewContentModeScaleAspectFit;
[tempImage release];
[newView addSubview:btn1];
[btn1 addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[thumbImageData release];
imgcount++;
NSLog(@"Iamge count ---%d",imgcount);
tag++;
};
ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror){
NSLog(@"Cannot get image - %@",[myerror localizedDescription]);
};
if ([seprateArr count] == 2) {
NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"assets-library://asset/asset.JPG?id=%@&ext=%@",[seprateArr objectAtIndex:0],[seprateArr objectAtIndex:1]]];
ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease];
[assetslibrary assetForURL:url resultBlock:resultblock failureBlock:failureblock];
}
它在ios - 4或以下工作正常,但在ios - 5中它没有进入阻止并显示错误
无法获取图片 - 全局拒绝访问
任何解决方案吗?
答案 0 :(得分:2)
这适用于ios 4.0和ios 5。
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
NSString *photoName;
NSString *photoUrl;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop)
{
if(result != NULL)
{
NSArray *arrKeys = [[result valueForProperty:ALAssetPropertyURLs]allKeys];
if([[result valueForProperty:ALAssetPropertyType]isEqualToString:ALAssetTypePhoto])
{
if([[UIDevice currentDevice] systemVersion]>=5.0))
{
photoName = [[result defaultRepresentation]UTI];
}
else
{
photoName = [[result defaultRepresentation]filename];
}
//Your code here
photoUrl = [[result valueForProperty:ALAssetPropertyURLs]objectForKey:[arrKeys objectAtIndex:0]];
}
}
};
void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop)
{
if(group != nil)
{
[group enumerateAssetsUsingBlock:assetEnumerator];
}
};
[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:assetGroupEnumerator failureBlock:^(NSError *error){
NSLog(@"%@",error);
}];
[pool release];