【问题标题】:Android default camera app opens twiceAndroid 默认相机应用打开两次
【发布时间】:2011-08-05 21:18:22
【问题描述】:

我正在启动 Android 上的默认相机应用,以使用以下代码在我的应用中获取图片:

//create parameters for Intent with filename
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, fileName);
        values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture by camera");

        //imageUri is the current activity attribute, define and save it for later usage (also in onSaveInstanceState)
        imageUri = getContentResolver().insert(
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

        //create new Intent
        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
        intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);

        startActivityForResult(intent, actionCode);

并在 onActivityResult 方法中捕获图片。

通常,这可以正常工作,设备会拍照并将其返回给应用程序,但有时在完成相机应用程序后(通过保存图像或点击取消),它会再次启动相机应用程序.如何防止应用打开两次?

编辑:感谢 Krylez 的 cmets,我能够制定解决方案。

我已经在使用静态类来保存来自相机的图像,以便我可以通过选项卡式 Activity 访问它,因此我还在其中放置了一个布尔值。现在,在我启动 Activity 来处理相机之前,我将该布尔值设置为 true,然后在检查后将其设置为 false,这样如果再次调用 onCreate 方法,它将不会再次加载相机。

【问题讨论】:

  • 这段代码块属于什么方法?
  • 在onCreate方法中。在选项卡式意图中实际上需要相机,但 startActivityForResult 在这种情况下会产生奇怪的结果,因此我正在启动选项卡之外的另一个活动来处理从相机意图中获取图像。
  • 好的,所以它有时发生而不是其他的原因是该活动保留在内存中,直到操作系统需要它回来。从相机返回到您的活动会导致再次调用 onCreate 方法,重新打开相机。
  • 谢谢,这告诉我我需要做什么来解决这个问题。

标签: android android-intent camera


【解决方案1】:

感谢 Krylez 的 cmets,我能够制定解决方案。

我已经在使用静态类来保存来自相机的图像,以便我可以通过选项卡式 Activity 访问它,因此我还在其中放置了一个布尔值。现在,在我启动 Activity 来处理相机之前,我将该布尔值设置为 true,然后在检查后将其设置为 false,这样如果再次调用 onCreate 方法,它将不会再次加载相机。

【讨论】:

    【解决方案2】:

    我能够通过使用相同的布尔技术但通过共享首选项、在首选项中存储是或否并围绕新意图来解决这个问题。

                  String val=sharedPref.getString(...);
                  if(val.equals("true"))
                    { launch new intent
                      sharedPrefEditor.putstring("..","false");
                      sharedPrefEditor.commit();
                     }
    

    它解决了问题,相机不会运行两次。 谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 1970-01-01
      相关资源
      最近更新 更多