Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从SD卡库而非其他源中拾取图像_Android_Android Intent_Gallery - Fatal编程技术网

Android 如何从SD卡库而非其他源中拾取图像

Android 如何从SD卡库而非其他源中拾取图像,android,android-intent,gallery,Android,Android Intent,Gallery,我正在创建一个应用程序,允许用户从手机图库中选择图片。对于SD卡上的图像,所有这些都可以正常工作,但当用户从Picassa选择图片时,应用程序崩溃 调用库的代码: Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i, SELECT_FROM_GALLERY_ACTION);

我正在创建一个应用程序,允许用户从手机图库中选择图片。对于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();
但评论并不乐观。我想限制gallery向用户显示Facebook、Picassa或其他图片,并允许她仅从SD卡中选择图片。

希望这有帮助--->

声明--->

内部onCreate()------>


我希望找到一个解决方案,使用内置的画廊来显示图像,但我会尝试一下,并返回给你!
    private int count;
private Bitmap[] thumbnails;
private boolean[] thumbnailsselection;
private String[] arrPath;
private ImageAdapter imageAdapter;
    Cursor imagecursor;
            String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID };
    String orderBy = MediaStore.Images.Media._ID;
    imagecursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,null, orderBy);
    int image_column_index = imagecursor.getColumnIndex(MediaStore.Images.Media._ID);


    this.count = imagecursor.getCount();
    this.thumbnails = new Bitmap[this.count];
    this.arrPath = new String[this.count];
    this.thumbnailsselection = new boolean[this.count];

    for (int i = 0; i < this.count; i++) {
        imagecursor.moveToPosition(i);
        int id = imagecursor.getInt(image_column_index);
        int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA);

        thumbnails[i] = MediaStore.Images.Thumbnails.getThumbnail(
                getApplicationContext().getContentResolver(), id,
                MediaStore.Images.Thumbnails.MICRO_KIND, null);

        arrPath[i]= imagecursor.getString(dataColumnIndex);
    }
    GridView imagegrid = (GridView) findViewById(R.id.PhoneImageGrid);
    imageAdapter = new ImageAdapter();
    imagegrid.setAdapter(imageAdapter);