Android Intent ACTION_IMAGE_CAPTURE

时间:2014-10-10 17:36:39

标签: android android-intent bitmap

我有一个简单的Android应用程序尝试拍照并将其作为带有多部分数据的HTTP POST发送到服务器。问题是Androids Intent的行为在某些手机上有所不同。我跑的时候

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);

在HTC One(Android 4.1.1)和Sony Xperia Z1(Android 4.4.4)上,它将图像存储在图库中,调用如下所示:

data.getData().getPath();

(数据是Intent的一个实例),而当我在LG Nexus 5(Android 4.4.4)上运行相同的代码时,图像不会存储,并且

data.getData();

返回null。

我需要的是一种存储图像的方法(暂时),所以我可以将它传输到服务器。

1 个答案:

答案 0 :(得分:1)

在最近的Android相机中看起来可能有一个错误,请在android上see this issue report。根据该错误,相机意图返回的data字段可能会以默认行为返回null。 (MediaStore.EXTRA_OUTPUT未使用)。

为了保证您始终获得图片,请自行分配文件并pass that uri in camera intent extras as MediaStore.EXTRA_OUTPUT

分配临时图像文件的最佳做法是确保安装了基础媒体,请参阅this sample code snippet on android developer site。成功完成相机意图后,只需使用您分配的文件uri ...不要使用getData(可以为null)。