2012-11-15 8 views
8

カメラから画像をキャプチャしてプライベートアプリのキャッシュディレクトリに保存したいと思います。私は私のプライベートディレクトリに書き込む許可をカメラアプリに与えなければならないことに気づいたので、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()); 

おかげ サイモン

+1

権限の問題であれば、LogCatにエラーが表示されます。 – PearsonArtPhoto

+0

それについてはわかりません。 FLAG_GRANT_WRITE_URI_PERMISSIONフラグを削除しても、ログ出力はありません。たぶん、カメラアプリはパーミッションをチェックし、ファイルを書き込めない場合はアクションを中止します。 – SimonSays

答えて

2

。 PictureCallback)

あなたのアプリのメモリに内容を取得します。そこから、あなたが望むことを何でもすることができます。

カメラアプリケーションもギャラリーを使用していることを忘れないでください。ギャラリーアプリはあなたのプライベートディレクトリを確認することができません。

+0

これは私が意図したものとはまったく違ったやり方です。実際には元の質問に対する回答ではありませんが、問題を解決する可能性があります。私はもうそのアプリケーションに取り組んでいないので、ソリューションをテストすることはできませんので、私はちょうど答えを受け入れるでしょう - それは唯一のものです:-) – SimonSays

+0

感謝のために多くの感謝とはいが直接ではありませんあなたの質問に答えるが、あなたのアプリだけに「属し」、メディアを使用している他のものには「何か」をする唯一の可能性があると述べた。私はこの方法を自分で使いました...ありがとう – danysz

+0

このソリューションはAPI 21で廃止されました –

関連する問題