iOS6.0以上系统访问系统相册隐私提示方法截获

来源:互联网 发布:京东商城项目源码 编辑:程序博客网 时间:2024/05/07 08:32

     在iOS6.0以上系统增加了隐私的选项,例如你的相册,通讯录,地理位置等,都会被保护,任意一个第三方的app 访问都要经过用户自己的同意,

例如:


这样我们自己的app 有时候也会需要知道用户是同意了还是不同意,好做一些处理。

这个也是有办法解决的,具体方法是:

1. 导入库“AssetsLibrary.framework”

2.在要用的类中引入头文件:#import<AssetsLibrary/ALAssetsLibrary.h>

3.在要调用系统相册的方法中加入一下代码:

[html] view plaincopy
  1. if ([ALAssetsLibrary authorizationStatus] == ALAuthorizationStatusNotDetermined) {  
  2.          
  3.        ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];  
  4.          
  5.        [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {  
  6.              
  7.            if (*stop) {  
  8.                //点击“好”回调方法:这里是重点  
  9.                NSLog(@"好");  
  10.                return;  
  11.                  
  12.            }  
  13.            *stop = TRUE;  
  14.              
  15.        } failureBlock:^(NSError *error) {  
  16.              
  17.            //点击“不允许”回调方法:这里是重点  
  18.            NSLog(@"不允许");  
  19.           [self dismissViewControllerAnimated:YES completion:nil];  
  20.              
  21.        }];  
  22.    }  


这里我是在一个button里面做了处理,如下:

[html] view plaincopy
  1. -(IBAction)LoadPhotoAlbum:(id)sender  
  2. {  
  3.     if ([ALAssetsLibrary authorizationStatus] == ALAuthorizationStatusNotDetermined) {  
  4.           
  5.         ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];  
  6.           
  7.         [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {  
  8.               
  9.             if (*stop) {  
  10.                 //点击“好”回调方法:  
  11.                 NSLog(@"好");  
  12.                 return;  
  13.                   
  14.             }  
  15.             *stop = TRUE;  
  16.               
  17.         } failureBlock:^(NSError *error) {  
  18.               
  19.             //点击“不允许”回调方法:  
  20.             NSLog(@"不允许");  
  21.            [self dismissViewControllerAnimated:YES completion:nil];  
  22.               
  23.         }];  
  24.     }  
  25.       
  26.     UIImagePickerController *PickerC = [[UIImagePickerController alloc] init];  
  27.     PickerC.delegate = self;  
  28.     PickerC.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;  
  29.     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {  
  30.         popOver = [[UIPopoverController alloc] initWithContentViewController:PickerC];  
  31.         [popOver presentPopoverFromRect:CGRectMake(0, 800, 500, 500) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];  
  32.           
  33.         popOver.delegate = self;  
  34.     } else {  
  35.         [self presentViewController:PickerC animated:YES completion:nil];  
  36.     }  
  37.       
  38. }  

然后就完全ok了。

如果我选择了“不允许”我会自己让我的imagePickerView dismiss。



如果点击了“好”。那就可以正常访问了:


下一步就是人脸识别了:


ok了。


源代码下载

原创粉丝点击