当前位置: 首页 > 知识库问答 >
问题:

Android:调用摄像机意图后,活动被销毁

孟绪
2023-03-14

我有两个活动(A1,A2)。A1呼叫A2,从A2我呼叫摄像机意图如下

launchIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
launchIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoPath);   
startActivityForResult(launchIntent,CAMERA_REQUEST);

它打开相机,我就可以拍照了。但是问题出现了,一旦我单击save按钮(s3中的勾选按钮),我的onActivityResult就不会被调用,而是A2的onDestroy方法被调用。我在onActivityResult fn中有一些逻辑需要完成。

我在Stackoverflow上读过一些关于这个的帖子,但我无法从中得到有用的输出。我的第二个活动(A2)有这样的清单

android:configChanges="keyboardHidden|orientation|locale"
android:screenOrientation="portrait

注意:在HTC One X中,调用了我的onActivityResult fn,但在我的S3中,第二个活动(A2)被销毁

请分享你的想法。提前谢谢

共有3个答案

高皓
2023-03-14

请确保您没有打开“不要保留活动”开发人员设置,因为它会破坏您要离开的活动。

丁正阳
2023-03-14

启动相机需要大量内存。因此,在内存较低的设备上,android系统会关闭在后台运行的活动,因此会调用onCreative()。由于这个光子疗法,你给的变成了空,你将无法得到保存的图像。

解决方案是在系统破坏您的活动时保存光路,然后再次恢复。

@Override
    public void onSaveInstanceState(Bundle outState) {
        // TODO Auto-generated method stub

            outState.putString("photopath", photopath);


        super.onSaveInstanceState(outState);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        if (savedInstanceState != null) {
            if (savedInstanceState.containsKey("photopath")) {
                photopath = savedInstanceState.getString("photopath");
            }
        }

        super.onRestoreInstanceState(savedInstanceState);
    }

如果你在碎片上做这个。

@Override
    public void onSaveInstanceState(Bundle outState) {
        // TODO Auto-generated method stub

            outState.putString("photopath", photopath));


        super.onSaveInstanceState(outState);
    }

    @Override
    public void onViewStateRestored(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        if (savedInstanceState != null) {
            if (savedInstanceState.containsKey("photopath")) {
                photopath = savedInstanceState.getString("photopath");
            }
        }

        super.onViewStateRestored(savedInstanceState);
    }
徐高韵
2023-03-14

我也有同样的问题。我会疯的,但最后我在这里找到了解决方案。问题是,当你点击相机的“保存”按钮时,活动调用更改方向方法,它将被破坏和重新创建。尝试设置

android:configChanges=“orientation | screenSize”

在android清单中(不仅是android:configChanges=“orientation”,因为正如这里所建议的,它不适用于API级别13或更高)。

它可以防止破坏活动,对我有效。

 类似资料:
  • 我的第一个问题!我有一段代码有问题,它用额外的输出选项开始相机意图,然后在活动结果上试图调整图像的大小。正在发生的情况是,在回调时的resize函数中会引发一个nullpointer异常。 活动结果回调函数: 下面是logcat:

  • 设置一个活动SingleTop从通知中接收意图。意图被活动所消耗。用户点击back按钮结束活动。onDestory被调用,isFinishing()返回true。长按Home键可调出最近的应用程序。启动以前关闭的应用程序。 当用户在活动上按下home键后调用onStop时,onNewIntent也会出现类似的情况。 null 这个问题和下面这个问题非常相似:http://grokbase.com/

  • 问题内容: 你们有以下问题的解决方法吗? 在注册活动的onDestroy中(当用户按下后退按钮时),我调用一个新活动,以便用户可以输入当天的某些最终生产数据,然后通过电子邮件发送该报告。问题在于,在刚刚开始的活动中,对getIntent的调用返回null,而我必须从那里获取数据。 ================================================== ========

  • 在发布本文之前,我不会列出我读过的所有参考资料,但我已经广泛阅读了有关stackoverflow的类似问题,以及所有关于活动/片段生命周期和维护状态的android开发人员文档,还没有找到解决方案。 以下是我的设想: 我有一个主要的活动(PulseActivity),它使用FragmentPagerAdapter。每个片段显示我从服务器检索的数据的单独列表。按下PulseActivity的acti

  • 问题内容: 我环顾四周,但似乎并没有解决这个非常恼人的问题的可靠答案。 我以纵向拍摄照片,然后单击“保存/放弃”,按钮也以正确的方向放置。问题是当我随后在横向上检索图像时(图像已逆时针旋转90度) 我不想强迫用户以特定方向使用相机。 有没有办法检测照片是否以人像模式拍摄,然后解码位图并将其向上翻转? 问题答案: 照片始终以相机内置在设备中的方向拍摄。为了使图像正确旋转,您必须读取存储在图片中的方向

  • 我试图捕捉图像和视频从我的android应用程序与默认相机使用意图。 使用上面的代码,我试图捕获图像,在中,我在处的数据中获得了Null 我尝试用意图传递Uri,但Uri为空。 相机意图无法在URI上写入图像。我需要uri以电子邮件发送图像视频。 错误日志