Fotoğraf makinesinden bir görüntü yakalamak ve bunu özel uygulama önbellek dizinine kaydetmek istiyorum. Özel dizime yazmak için kamera uygulaması iznini vermem gerektiğini anlıyorum, bu yüzden FLAG_GRANT_WRITE_URI_PERMISSION
bayrağını ekledim.Fotoğraf makinesini özel uygulama önbellek dizinine depolayın
Neler oluyor, kamera uygulaması açılıyor, fotoğrafı çekebilirim, ancak OK düğmesine tıkladığımda hiçbir şey olmuyor. Kamera uygulaması açık kalıyor. Kayıt çıkışı yok. Sanırım bir izin problemi yüzünden.
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();
}
}
Herhangi anlayışlar, nasıl bunu düzeltmek olabilir?
Düzenleme:
ben kamu SD karta dizin değiştirdiğinizde, o zaman gayet iyi çalışıyor. Bunun yerine 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 kullanabilirsiniz resim depolamak için Uri geçen
mTmpFile = File.createTempFile("tmp", ".jpg", Environment.getExternalStorageDirectory());
Teşekkür Simon
Bir izin sorunu olsaydı, LogCat'ta bir hata ortaya çıktı. – PearsonArtPhoto
Bundan emin değilsiniz. FLAG_GRANT_WRITE_URI_PERMISSION bayrağını kaldırdığımda bile herhangi bir günlük çıkışı almıyorum. Belki kamera uygulaması izni kontrol eder ve dosyayı yazamazsa eylemi iptal eder. – SimonSays