我有一个简单的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。
我需要的是一种存储图像的方法(暂时),所以我可以将它传输到服务器。
答案 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)。