如何从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();
}
}
答案 0 :(得分:4)
如何从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类型"。
答案 1 :(得分:0)
您忘记了intent.setAction(Intent.ACTION_GET_CONTENT);
如果您不添加data.getData()
将为空