1

アプリでELCImagePickerControllerを使用しました。ただし、アプリケーションを初めて起動して画像ギャラリーでユーザーの場所へのアクセスを要求する場合、ユーザーの場所へのアクセスを許可しないと、UIAlertViewでエラーが発生し、画像ギャラリーが表示されません。

しかしその後、アプリの設定->位置情報サービス-> [アプリのアクセス場所のスイッチをオンにする]に移動すると、アプリを起動します->ギャラリーページに移動します->アプリに画像ギャラリーを表示できます。

だから私の質問は、ELCImagePickerControllerを使用して画像ギャラリーを表示し、アプリの位置情報サービスをオフにするか、ユーザーがアプリへの位置情報へのアクセスを許可しないようにする方法です。ELCImagePickerControllerはこのリンクからダウンロードできます

次に、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];
});    
4

1 に答える 1

2

答えは、位置情報サービスがオフになっているELCImagePickerControllerでは画像ギャラリーを表示できないということです。

ELCImagePickerControllerは、Assets Library Frameworkを使用して、デバイスのフォトアルバムにアクセスします。このフレームワークは、位置データを含む写真のメタデータへのアクセスも提供するため、ユーザーはアプリが位置情報サービスを使用するためのアクセス許可を付与する必要があります。

標準のUIImagePickerControllerを使用する場合を除いて、これを回避する方法はありません(ただし、アプリの要件はカバーされないと思います)

于 2011-08-07T00:31:08.583 に答える