如何从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/