我正在尝试将相机包含在我的应用程序中,以便将文件本地保存在SD卡上。相机应用程序启动,但resultCode始终为0.我已将以下权限添加到我的Manifest:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
以下是我相机的代码:
@SuppressLint("SimpleDateFormat")
private void takePicture(){
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "/resources/resources/WI1");
SimpleDateFormat timeStampFormat = new SimpleDateFormat("MM/dd/yyyy");
String image_name =username +"-"+ timeStampFormat.format(new Date())+".png";
File image = new File(imagesFolder, image_name);
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
int request_code = 100;
startActivityForResult(imageIntent, request_code);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
Toast.makeText(this, "Image Saved", Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(this,"Error Saving Image, please throw device at wall", Toast.LENGTH_SHORT).show();
} // end on activity result
是什么导致了这个错误? 谢谢!
编辑:我删除了之前发布的logcat信息,因为它与此问题无关。 EDIT2:
我一半解决了这个问题,如果我使用这个代码,相机工作得很好。有人能告诉我是什么原因引起的吗?
private void takePicture(){
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "/resources/resources/WI1");
String image_name = "matt"+image_count+".png";
image_count+=1; // this is at the moment useless.
File image = new File(imagesFolder, image_name);
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
int request_code = 100;
startActivityForResult(imageIntent, request_code);
}
编辑3: 问题在于timeStampFormat,如果我将其排除,相机工作正常。有人能解释为什么吗?如果我没有弄错的话,那是因为我选择的日期格式中有正斜杠。
答案 0 :(得分:-1)
我遇到了同样的错误 - resultCode始终为0.事实证明,在我在相机应用程序中拍摄照片后,我点击了右下角的X而不是底部中心的复选标记。
答案 1 :(得分:-3)
因为你没有在活动中设置结果代码,因为你没有在活动中设置结果代码,假设我从...和活动bi设置setReuslt(reuslt_ok)调用活动b,那么只有onactivity结果将得到结果代码作为result_ok。 。默认情况下,结果代码为0
因为你正在打开android的内部摄像头活动,所以你没有在那里设置你的结果代码,所以当摄像头活动完成后它会将默认代码返回给你