0

ユーザーが電話ギャラリーから写真を選択できるアプリを作成しています。SD カードの画像についてはすべて問題なく動作しますが、ユーザーが Picassa から画像を選択すると、アプリケーションがクラッシュします。

ギャラリーを呼び出すコード:

Intent i = new Intent(Intent.ACTION_PICK,
   android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, SELECT_FROM_GALLERY_ACTION);              

画像を受信するためのコード:

Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
File galeryFile = new File(filePath);
FileUtils.copyFile(galeryFile, imageFile);
processImage(imageFile);

エラー:

08-30 14:51:04.268: E/ActivityThread(31379): Failed to find provider info for com.android.gallery3d.provider
08-30 14:51:04.278: E/AndroidRuntime(31379): FATAL EXCEPTION: main
08-30 14:51:04.278: E/AndroidRuntime(31379): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=4353, result=-1, data=Intent { dat=content://com.android.gallery3d.provider/picasa/item/5735585761449205042 flg=0x1 }} to activity {com.example.my_gallery_app/com.example.my_gallery_app.MainActivity}: java.lang.NullPointerException

次の行でヌル ポインタが発生します。

cursor.moveToFirst();

この回避策を読みました。しかし、コメントは有望ではありません。ギャラリーがユーザーの Facebook、Picassa、またはその他の写真を表示しないように制限し、SD カードからのみ画像を選択できるようにしたいと考えています。

4

1 に答える 1