完全に機能しているアプリがあります。カメラのインテントまたは権限に1つの問題があります。
アプリは、ユーザーがボタンを押すとカメラアクティビティを起動することになっています。これは正常に機能していますが、ユーザーがカメラの[OK]ボタンをクリックして写真を受け入れると、アプリに戻りません。カメラのキャンセルボタンを押すと、期待どおりにアプリに戻ります。
私はここで見つけることができるすべての同様の質問を読みましたが、それらのどれも私の問題を解決していません。アプリで2つを交互に使用したいので、画像を保存する場所をカメラに正確に伝える必要があります。CameraIntentを作成して開始するコードは次のとおりです。
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.parse(imagePath));
startActivityForResult(intent, 11);
(文字列である)に対して複数の値を試しましimagePath
たが、カメラの[OK]ボタンがそれらのいずれでも機能しませんでした。これらは私が試したパスです:
/mnt/sdcard/<appName>/cameraImages/image1.jpg
from Environment.getExternalStorageDirectory()
/mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg
from context.getExternalCacheDir()
/mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg
from context.getCacheDir()
マニフェストファイルに次の権限があります。
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
コードの何が問題になっているのかを理解するのを手伝ってもらえますか、それとも有効なパスを教えてもらえますか?ユーザーがアプリケーションを離れた後も画像が存在し続けることは重要ではないため、画像をキャッシュの場所に保存することをお勧めしますが、誰が画像にアクセスできるかはあまり気にしません。
4.1エミュレーターですべてのテストを行い、4.1 SDKでコンパイルしています。最小バージョンは、API 8(2.2)です。
私はその意図をonActivityResult()
主張しましたが、問題に影響を与えるべきではないので、皆さんがそのコードを見る必要はないと思います。