相机应用程序不会返回我的活动

时间:2014-02-15 14:25:00

标签: android android-camera

我想启动相机应用程序来拍照,但是当我按下确定按钮时,相机应用程序仍处于前台,我的活动无法恢复。

以下是我的工作:

    File file = new File(getFilesDir() + File.separator + UUID.randomUUID().toString() + ".jpg");
    try {
        file.createNewFile();
    } catch (IOException e) {
        Toast.makeText(this, R.string.problem_creating_file, Toast.LENGTH_LONG).show();
        return;
    }
    Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
    takePhotoIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivityForResult(takePhotoIntent, REQUEST_CODE_PHOTO);

在清单中:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

我在互联网上找到了很多解决方案,但没有人为我工作:(

3 个答案:

答案 0 :(得分:1)

您正在启动第三方活动。没有人强迫该活动的作者做你想要的任何事情,包括:

  • 拍照
  • 将图片存储在您要求的位置
  • 拍摄照片后立即返回您的应用

许多相机应用程序至少会执行前两项操作。人们希望所有的相机应用程序都会拍照,但可能至少有一个应用程序在其ACTION_IMAGE_CAPTURE实现中存在错误。

因此,当您要求第三方应用程序拍照时,您和您的应用程序不得对第三方应用程序正在执行的操作做出任何假设。特别是,您需要注意用户可能需要按BACK才能离开相机应用程序并返回到您的应用程序,具体取决于用户所选相机应用程序的实现。并且完全有可能一个有缺陷的相机应用程序甚至不会尊重BACK按钮,在这种情况下,用户需要选择更好的相机应用程序。

答案 1 :(得分:0)

删除此...

takePhotoIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

答案 2 :(得分:0)

如果您只需要拍摄照片并且没有任何相机产生的奇怪效果,您可以编写相机类以在您的应用中使用,这样您就可以控制其功能。