カメラから画像をキャプチャしてプライベートアプリのキャッシュディレクトリに保存したいと思います。私は私のプライベートディレクトリに書き込む許可をカメラアプリに与えなければならないことに気づいたので、FLAG_GRANT_WRITE_URI_PERMISSION
フラグを付け加えました。カメラの画像をプライベートアプリのキャッシュディレクトリに保存する
何が起こっているのかは、カメラアプリが開いて写真を撮ることができますが、[OK]ボタンをクリックしても何も起こりません。カメラアプリは開いたままです。ログ出力はありません。私は許可の問題のためだと思う。
private void getCameraImage() {
try {
mTmpFile = File.createTempFile("tmp", ".jpg", getCacheDir());
Uri imgUri = Uri.fromFile(mTmpFile);
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT, imgUri);
i.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// i.setData(imgUri); // if uncommented, i get an ActivityNotFound Exception
startActivityForResult(i, REQUEST_CAMERA);
} catch (IOException e) {
Log.e(TAG, "getCameraImage()", e);
Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show();
}
}
これを修正する方法についての洞察はありますか?
編集:
私は公共のSDカードにディレクトリを変更すると、それが正常に動作します。代わりにあなたがhttp://developer.android.com/reference/android/hardware/Camera.html#takePicture(android.hardware.Camera.ShutterCallback、android.hardware.Camera.PictureCallback、android.hardware.Camera.PictureCallback、android.hardware.Cameraを使用することができ、画像を保存するためにURIを渡す
mTmpFile = File.createTempFile("tmp", ".jpg", Environment.getExternalStorageDirectory());
おかげ サイモン
権限の問題であれば、LogCatにエラーが表示されます。 – PearsonArtPhoto
それについてはわかりません。 FLAG_GRANT_WRITE_URI_PERMISSIONフラグを削除しても、ログ出力はありません。たぶん、カメラアプリはパーミッションをチェックし、ファイルを書き込めない場合はアクションを中止します。 – SimonSays