我遇到了一个问题:ACTION_IMAGE_CAPTURE 意图的行为取决于硬件制造商。
我认为,从相机中获取照片并插入照片库的最佳方法应该是以下内容:
我认为,从相机中获取照片并插入照片库的最佳方法应该是以下内容:
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, CAPTURE_IMAGE_REQUEST);
然后在 onActivityResult
中获取 uri:
switch (requestCode) {
case CAPTURE_IMAGE_REQUEST: {
if(resultCode == Activity.RESULT_OK) {
Uri uri = intent.getData();// content uri of photo in media gallery
//do something with this
}
break;
}
但是我发现这在许多设备上都无法正常工作;此外,我发现相机应用程序的行为有几种不同的情况:
- 一些设备存在错误,因此无法获取全尺寸照片,只能使用公共目录中的临时文件获取512像素宽的照片。
- 一些设备(包括我的设备)将拍摄的照片插入到图库中,但不返回Uri。(getData()返回null,意图附加项仅具有布尔键“specify-data”,值为true)如果我尝试通过公共临时文件获取照片,那么照片将被插入到图库和临时文件中。
- 一些设备不会将拍摄的照片插入到图库中-我必须手动执行此操作。
- 我不知道,但可能存在其他不同的情况。
那么,在管理此类问题时是否有最佳实践可以涵盖各种设备和制造商?
在这种情况下,我需要从相机拍摄照片,将其插入到图库中,然后获取图库中照片的uri。