0
同じ問題を述べている多くの質問がありましたが、私のコードで何が間違っているかわからないようです。
私はUriを使用するのが初めてで、何が起こっているのか本当に理解していません。まず
、写真を撮るためにカメラのための活動を開始する責任があるコード:ファイルを書き込もうとしているときにENOENTエラーが発生する
void cameraAction() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File f = new File(Environment.getExternalStorageDirectory(), "temp.jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
startActivityForResult(intent, 1);
}
問題が発生コード:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == 1) {
File f = new File(Environment.getExternalStorageDirectory().toString());
for (File temp : f.listFiles()) {
if (temp.getName().equals("temp.jpg")) {
f = temp;
break;
}
}
try {
Bitmap bitmap;
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(),
bitmapOptions);
viewImage.setImageBitmap(bitmap);
String path = Environment
.getExternalStorageDirectory()
+ File.separator
+ "Phoenix" + File.separator + "default";
OutputStream outFile;
String fileName = "" + System.currentTimeMillis() + ".jpg";
File file = new File(path, fileName);
try {//This is where the ENOENT error is shown
outFile = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 85, outFile);
outFile.flush();
outFile.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
} else if (requestCode == 2) {
}
}
}
* Phoenix/default/*フォルダは、外部ストレージに既に存在していますか? – adelphus
@adelphus私はそうではないと思う、私は方法がディレクトリをそれ自身作成すると思った。早速のお返事ありがとうございます!あなたは私にこれを解決する方法を導くことができますか? –
いいえ - 最初にディレクトリを作成する必要があります。 'File.mkdirs()'が役に立ちます。 – adelphus