我在我的应用中使用相机。当我拍照时,照片正确保存在模拟器的SD卡上(我使用Android设备管理器进行了检查)。这是我用来保存照片的代码:
private class AddPhotoButtonListener implements View.OnClickListener
{
public void onClick(View v)
{
String fileName = "/sdcard/note_photo_" + System.currentTimeMillis() + ".jpg";
Uri uriSavedImage = Uri.fromFile(new File(fileName));
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
camera.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
note.photo = fileName;
startActivityForResult(camera, REQUEST_CODE_TAKE_PICTURE);
}
}
这没有任何错误。该文件保存在:storage / emulated / 0 /
中我正在按照以下方式处理相机的结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
if (requestCode == REQUEST_CODE_TAKE_PICTURE && resultCode == Activity.RESULT_OK)
{
Uri imgUri = Uri.parse(note.photo);
ivPreview.setImageURI(null);
ivPreview.setImageURI(imgUri);
ivPreview.getLayoutParams().width = 120;
}
}
但是,这会产生以下错误:E / BitmapFactory:无法解码流:java.io.FileNotFoundException:/sdcard/note_photo_1480094620584.jpg:open failed:EACCES(Permission denied)
我的应用清单权限设置如下:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature android:name="android.hardware.camera"></uses-feature>
有谁知道问题可能是什么?