2016-08-03 89 views
1

我有MainActivity,可以在其中启动相机应用程序以拍摄和上传照片。在家里长时间按下相机应用程序并从最近返回后,我会返回相机应用程序。我如何总是从最近返回MainActivity或启动器图标点击后?Android - 从最近重新启动任务后返回MainActivity

我的相机应用的意图:

private void showCamera() { 
    try { 
     Intent cameraIntent = new Intent(
     android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

     path = Utils.getOutputMediaFileUri(getApplicationContext()); 

     cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, path); 

     startActivityForResult(cameraIntent, Constant.CAMERA_REQUEST); 
    } catch (ActivityNotFoundException ex) { 
    } catch (Exception ex) { 
    } 

} 

回答

0

该要做到这一点正确的方法是添加FLAG_ACTIVITY_NO_HISTORYIntent您使用启动相机,像这样:

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    cameraIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
    path = Utils.getOutputMediaFileUri(getApplicationContext()); 
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, path); 
    startActivityForResult(cameraIntent, Constant.CAMERA_REQUEST); 

通过添加NO_HISTORY标志,告诉你的Android,你不希望相机Activity离开历史痕迹。当用户离开相机Activity(即:按HOME按钮或接听来电)时,相机Activity将立即完成。当用户返回到您的应用程序(通过从最近的任务列表中选择它,或者通过按HOME画面上的应用程序图标),摄像机Activity将不再位于最前面。

+0

感谢您的回答!目前的最佳解决方案,一切正常,但我有一个问题:在最常见的情况下,当我从MainActivity启动cameraIntent - >拍照 - >保存 - > onActivityResult()方法时,我收到RESULT_CANCELED一些原因。此外,我总是收到RESULT_CANCELED这个意图标志。为什么?返回结果前摄像机活动是否完成? –

+0

这可能是一个问题。这种情况非常复杂。你为什么想要这种行为?标准的行为是如果用户将相机放在顶部,应用程序就会返回相机“活动”。 –

+0

我已经试过这个代码,使用一个更简单的机制,我只是启动相机'活动'拍摄照片并将其返回到'onActivityResult()'(不指定'EXTRA_OUTPUT')。这工作,我得到RESULT_OK和照片回来。如果相机“活动”启动了其他一些“活动”来保存照片,这可能会导致您看到的问题。 –

0

在您的主要活动

android:launchMode="singleTask" 

在manifest.xml文件夹

+0

http://stackoverflow.com/questions/5223897/shortcut-from-recent-applications-always-launch-latest-activity-of-application这篇文章回答了您的所有问题 –

+0

谢谢,但这不起作用。我仍然从recents返回到相机应用程序。我将添加我的相机意图代码。 –

+0

链接的问题是有缺陷的。答案大多是错误的,并没有解决OPs的实际问题。 –

0

在清单为您的主要活动

android:excludeFromRecents="true" 
android:launchMode="singleTask" 
+0

谢谢,这是一种解决方案,但不完全是我想要的。这排除了我的整个应用程序从最近。我不想那样,我只是想从图标和最近返回到MainActivity。 –

相关问题