我正在编写一个必须拍照并将其发送到网络服务的应用程序。 我用的代码是:
i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
outputFileUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/appicture.jpg"));
Log.i("URI", outputFileUri.toString());
i.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(i, cameraData);
URI看起来像:
文件:///sdcard/appicture.jpg
但如果我在i.putExtra中放入“outputFileUri”var,我的应用就退出了。 如果没有,我可以拍照,但我无法获取她的URI,然后无法将其发送到我的网络服务。
编辑1: 错误日志(在活动重新列表上)
06-26 09:17:46.108:I / Cam错误(699):java.lang.NullPointerException
编辑2: 如果我删除“outputFileUri”,我正确得到了图像。但是,我无法将位图转换为文件以便能够发送它。
if(resultCode == RESULT_OK){
Bundle extras = data.getExtras();
_bmp = (Bitmap) extras.get("data");
}
编辑3:
问题来自
_bmp =(Bitmap)extras.get(“data”);
图片正确保存在SD卡中。
答案 0 :(得分:3)
在Manifest中添加 WRITE_EXTERNAL_STORAGE 权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
修改强>
如果您在Intent中传递Image Uri以捕获图像,则获取图像,如onActiityResult
中所示:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == cameraData) {
File picture = new File(Environment.getExternalStorageDirectory() + "/appicture.jpg");
Uri imguri=Uri.fromFile(picture);
}
super.onActivityResult(requestCode, resultCode, data);
}
如果您希望将图像作为onActiityResult
中的数据,则将Camra作为:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, cameraData);
onActivityResult:
onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == cameraData) {
Bundle extras = data.getExtras();
_bmp = (Bitmap) extras.get("data"); //Get data here
}
}
}
答案 1 :(得分:1)
请在清单文件
中添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
快乐编码..
答案 2 :(得分:1)
如果您已添加权限且路径正确。您可以尝试删除路径末尾的“.jpg”