从SD卡中挑选未被设备相机拍摄的照片

时间:2014-11-05 11:00:16

标签: android

我试图用这个意图从我的SD卡中挑选照片:

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, this.getResources().getString(R.string.title_pick_photo)), Globals.REQUEST_CODE_PICK_PHOTO);

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == Globals.REQUEST_CODE_PICK_PHOTO) {
        if(resultCode == RESULT_OK) {
            this.onPhotoPicked(Helper.getAbsoluteImagePath(this, data.getData()));
        }
    }
}

private void onPhotoPicked(String imagePath) {
    this.imagePicked = true;
    this.imageTaken = false;
    this.imagePath = imagePath;

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 4;

    Bitmap bitmap = BitmapFactory.decodeFile(this.imagePath, options);
    this.imageViewPhoto.setImageBitmap(bitmap);
}

这适用于所有我选择的设备相机拍摄的照片。 如果我想从其他地方选择这种方法的照片:

public static String getAbsoluteImagePath(Context context, Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);

    if (cursor != null) {
        int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();

        return cursor.getString(columnIndex);
    } else {
        return null;
    }
}

但不知何故,这对我从SD卡中选择的照片不起作用 没有像设备相机那样下载,Dropbox或Facebook照片。 如果我尝试cursor.getString(columnIndex)始终为空。

那么我怎样才能选择相机未拍摄的照片呢?

1 个答案:

答案 0 :(得分:0)

您是否在清单中添加了此权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />