9

カメラから画像をキャプチャし、プライベート アプリのキャッシュ ディレクトリに保存したいと考えています。カメラアプリにプライベートディレクトリへの書き込み許可を与える必要があることに気付いたので、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 カードに変更すると、正常に動作します。

mTmpFile = File.createTempFile("tmp", ".jpg", Environment.getExternalStorageDirectory());

ありがとうサイモン

4

1 に答える 1