默认相机活动未完成按OKbutton按下

我从我的活动调用默认相机,然后处理onActivityResult。 我的代码似乎工作得很好,在拍照时没有确认的LG Ally。 但是,当我在Nexus S上运行相同的应用程序时,它会在返回到我的活动之前提示“Ok”,“Retake”或“Cancel”。 虽然“取消”的作品,没有保存图片返回到我的活动,“好”似乎没有任何效果,甚至没有回到我的活动。

我的代码如下:

private void captureImage() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { File path = new File(Environment.getExternalStorageDirectory().getPath() + "/Images/" + (new UserContextAdapter(this)).getUser() + "/"); path.mkdirs(); File file = new File(path, "Image_Story_" + mRowId.toString() + ".jpg"); newImageUri = Uri.fromFile(file); Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, newImageUri); startActivityForResult(intent, CAPTURE_IMAGE); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { switch (requestCode) { case CAPTURE_IMAGE: switch (resultCode ) { case 0: Log.i("CAPTURE", "Cancelled by User"); break; case -1: mImageUri = newImageUri; setImageFromUri(); } } 

Solutions Collecting From Web of "默认相机活动未完成按OKbutton按下"

我想我只是有同样的问题。

如果保存图片的path不正确,相机将不会返回到您的应用程序。 一旦我确定目录存在,一切正常。 确保目录存在,那么它应该工作。

– 编辑 –

我刚才看到,你调用path.mkdirs(); 但我认为这是行不通的。 正如你可以在android文档中看到的那样“注意,这个方法在抛出IOExceptionexception时不会抛出exception。调用者必须检查返回值。” 请确保检查目录是否真的存在。

心连心

此外,如果您使用上面的Environment.getExternalStorageDirectory().getPath() ,请确保您的应用程序具有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

希望这有助于=)

请检查这个

情况1:

 Uri newImageUri = null; File path = new File(Environment.getExternalStorageDirectory().getPath() + "/Images/"); path.mkdirs(); boolean setWritable = false; setWritable = path.setWritable(true, false); File file = new File(path, "Image_Story_" + System.currentTimeMillis() + ".jpg"); newImageUri = Uri.fromFile(file); Log.i("MainActivity", "new image uri to string is " + newImageUri.toString()); Log.i("MainActivity", "new image path is " + newImageUri.getPath()); Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, newImageUri); startActivityForResult(intent, REQUEST_CODE_CAPTURE_IMAGE); 

案例2:

 String fileName = "" + System.currentTimeMillis() + ".jpg"; ContentValues values = new ContentValues(); values.put(MediaStore.Images.Media.TITLE, fileName); values.put(MediaStore.Images.Media.DESCRIPTION, "Image capture by camera"); values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); Uri imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); Log.i("MainActivity", "new image uri to string is " + imageUri.toString()); Log.i("MainActivity", "new image path is " + imageUri.getPath()); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); startActivityForResult(intent, REQUEST_CODE_CAPTURE_IMAGE); 

在上述两种情况下,我都能够通过相机在相机上保存图像。情况1:a.Image存储在自定义文件夹中。 湾 如果“System.currentTimeMillis()”更改为(“new Date()。toString()”),则图像不会保存,并且摄像机不会返回到我的活动。 (可能是因为“System.currentTimeMillis”没有空格,“new Date()。toString()”可能有一些特殊的字符和空格)在情况2中:a。 图像存储在相机文件夹中

谢谢大家

我有同样的问题。你只需要做一个工作,在你的手机存储检查你有没有图片目录。如果你没有这样的图书馆,然后手动。

希望这对你有用。