我有一个完全可以运行的应用程序。我的相机意图或权限只有 1 个问题。
该应用程序应该在用户按下按钮时启动相机活动。这很好,但是当用户通过单击相机上的确定按钮接受图片时,它不会返回到我的应用程序。如果他们按下相机上的取消按钮,它会按预期返回到我的应用程序。
我已经阅读了我可以在这里找到的所有类似问题,但没有一个能解决我的问题。我需要告诉相机确切地保存图像的位置,因为我想在我的应用程序中交替使用 2。下面是创建 Camera Intent 并启动它的代码:
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.parse(imagePath));
startActivityForResult(intent, 11);
我尝试了多个值imagePath
(这是一个字符串),但相机的“确定”按钮没有与它们中的任何一个一起使用。这些是我尝试过的路径:
/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()
,但我认为你们不需要查看该代码,因为它不应该影响问题。