java - 按下确定按钮后,Android 相机 Activity 不会返回到我的应用程序

标签 java android android-camera

我有一个可以正常运行的应用程序。我的 Camera Intent 或权限只有 1 个问题。

应用应该在用户按下按钮时启动相机 Activity 。这工作正常,但是当用户通过单击相机上的“确定”按钮接受图片时,它不会返回到我的应用程序。如果他们按下相机上的取消按钮,它会按预期返回到我的应用程序。

我已经阅读了所有可以在此处找到的类似问题,但没有一个能解决我的问题。我需要告诉相机确切的图像保存位置,因为我想在我的应用程序中在 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(它是一个字符串)尝试了多个值,但是相机的 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()

我的 list 文件中有以下权限:

<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() 中说明了 Intent ,但我认为你们不需要查看该代码,因为它不应该影响问题。

最佳答案

我能够弄清楚这个问题。似乎而不是使用 Uri.parse(imagePath) , 你必须使用 Uri.fromFile(new File(imagePath))当你添加额外的。我已将新的 Intent 代码放在下面,以防它能帮助遇到相同问题的任何人。

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(imagePath)));
startActivityForResult(intent, 11);

我现在成功地使用了 context.getExternalCacheDir()创建完整路径 imagePath .我创建的结果路径是 /mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg .

关于java - 按下确定按钮后,Android 相机 Activity 不会返回到我的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12812165/

相关文章:

java - 转换字符串并获取指定值 Java (Android)

android - Android中如何绘制两种颜色的圆弧

java - 如何镜像显示OpenCV JavaCameraView前置摄像头(Android)?

java - 与 Instagram 相比,CameraPreview 显示的是放大后的图像

Android:更改 key 后如何刷新显示的首选项?

android - 三星 Gear VR 激活后置摄像头

java - 将所有 BigDecimal 操作设置为特定精度?

JAVA SWT 与简单的 Eclipse

java - ExpandableListView 中的 Android 数据绑定(bind)

java - Android 编辑文本和对话框