所以我写的是一个意图,它应该启动画廊来查看传递到意图中的图像,并使用它的Uri。这段代码工作正常,完全符合我的要求:
private Intent makeGalleryIntent(String pathToImageFile) {
Intent mGalleryIntent = new Intent(Intent.ACTION_VIEW);
mGalleryIntent.setDataAndType(Uri.parse("file://" + pathToImageFile), "image/*");
return mGalleryIntent;
}
但是当我尝试使用它时(只是在我学习的时候尝试不同的东西),这个代码要么在模拟器上崩溃,因为它无法启动相机,或只是在物理设备上拉出我的库:
private Intent makeGalleryIntent(String pathToImageFile) {
Intent mGalleryIntent = new Intent(Intent.ACTION_VIEW);
mGalleryIntent.setData(Uri.parse("file://" + pathToImageFile));
mGalleryIntent.setType("image/*");
return mGalleryIntent;
}
他们看起来都应该做同样的事情。另外,有没有一种方法可以使用Intent构造函数正确设置所有这些?
答案 0 :(得分:8)
来自文档:Intent Documentation
要仅设置数据URI,请调用setData()。要仅设置MIME类型,请调用setType()。如有必要,您可以使用setDataAndType()显式设置它们。
警告:如果要同时设置URI和MIME类型,请不要调用setData()和setType(),因为它们都会使另一个的值无效。始终使用setDataAndType()来设置URI和MIME类型。
我从来没有真正得到答案,为什么他们会相互抵消..如果你有一个想法,为什么id喜欢听到它!