繁体   English   中英

Gallery intent.getData()在onActivityResult中返回null

[英]Gallery intent.getData() returns null in onActivityResult

我最近在我的应用程序中修复了一些在某些设备上发生的已知错误 ; 当用户从我的应用程序启动的意图中拍摄照片时,在onActivityResult Uri uri = intent.getData(); 返回null。 我设法以建议的方式解决了这个问题。 但是,当用户需要从手机的照片库中选择图片时,我会得到完全相同的问题。 相同的intent.getData() == null

开始意图:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent, "Select Picture"),     
R.id.SELECT_IMAGE_ACTIVITY_REQUEST_CODE);

onActivityResult:

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();
dataHasChanged(ACTION_PICTURE, filePath);

PS:奇怪的是,如果我开始如下所示的意图,我可以获得intent.getData()intent.getData()是我在我的三星s4而不是GooglePhotos应用程序上使用“Gallery”应用程序。

Intent pickImageIntent = new Intent(
    Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
if (pickImageIntent.resolveActivity(getPackageManager()) != null)
    startActivityForResult(pickImageIntent, R.id.SELECT_IMAGE_ACTIVITY_REQUEST_CODE);

我不确定如何继续。 我发现整个Android意图事件有时令人困惑。

我给你代码供你参考:

从您的应用中点击图片后使用以下代码:

    Intent intent = new Intent();
    // call android default gallery
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    try {
        intent.putExtra("return-data", true);
        startActivityForResult(Intent.createChooser(intent,"Complete action using"), PICK_FROM_GALLERY);
    } catch (ActivityNotFoundException e) {
        // Do nothing for now
    }

下面的代码将在你的onActivityResult()

        if (requestCode == PICK_FROM_GALLERY) {
            if (resultCode != RESULT_CANCELED) {
                Bundle extras2 = data.getExtras();
                if (extras2 != null) {
                photo = extras2.getParcelable("data");
                bitmap = photo;
                profile_imageView.setImageBitmap(photo);
                new ImageUploadTask().execute();
                }   
            }
        }

希望这能解决你的问题。

static final int REQUEST_GALLERY_IMAGE = 14;

----------
 Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
        photoPickerIntent.setType("image/*");
        startActivityForResult(photoPickerIntent, REQUEST_GALLERY_IMAGE );


 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      if (requestCode == REQUEST_GALLERY_IMAGE && resultCode == RESULT_OK) {
            try {
                final Uri imageUri = data.getData();
                InputStream imageStream = getContentResolver().openInputStream(imageUri);
                final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
                imagePreview.setImageBitmap(selectedImage);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM