如何从Bundle获取URI?我试过下面的代码,但是data.getExtras();将给出错误,而data.getData()将给出null。

Intent intent = new Intent(Intent.ACTION_PICK,

                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            intent.setType("image/*");

            intent.putExtra("scale", true);
            intent.putExtra("crop", "true");
            intent.putExtra("outputX", 256);
            intent.putExtra("outputY", 256);
            intent.putExtra("aspectX", 1);
            intent.putExtra("aspectY", 1);
            intent.putExtra("return-data", true);
            startActivityForResult(intent, 1);

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {

 final Uri imageUri = data.getExtras();
final Uri imageUri = data.getData();
}
}

最佳答案

如何从Bundle获取URI?


通常你不会。


  但是data.getExtras();会给出错误


这是因为getExtras()返回的是Bundle,而不是Uri


  和data.getData()将给出null


用户没有选择任何东西,或者用户为此请求选择的ACTION_PICK活动中都有错误。

另外,请注意,您在ACTION_PICK上放置的那些额外内容均未记录,不受支持,并且在许多设备上均不被接受。有很多image cropping libraries available for Android。请使用一个。

另外,ACTION_PICK不使用MIME类型。 ACTION_PICK说“从此内容集中选择一个内容”。如果要按MIME类型限制内容,请使用ACTION_GET_CONTENT(在Uri中不要使用Intent)或ACTION_OPEN_DOCUMENT说“给我一些与此MIME类型匹配的内容”。

关于android - 从Bundle获取URI,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45567362/

10-11 22:43
查看更多