gpt4 book ai didi

android - 您如何根据 Intent 的数据在android中启动不同的 Activity

转载 作者:行者123 更新时间:2023-11-30 01:18:51 24 4
gpt4 key购买 nike

我正在制作一个实际上包含两个 Activity 的应用程序。

其中一个将允许用户登录,如果登录成功,将启动网络浏览器 (MenuActivity)。另一个拍摄照片并将其上传到服务器 (PhotoActivity)。

该 Web 浏览器将有一个链接,按下该链接将以拍照模式加载我的应用程序。

流程通常是这样的:MenuActivity->web browser->PictureActivity 然后重复最后两步。

到目前为止,我已经通过将我的启动器 Activity 设置为 MenuActivity 然后将使用此代码放在 OnCreate 覆盖中来完成此操作:

Intent mine = getIntent();
if (mine.getData() != null && !mine.getData().getPathSegments().isEmpty()) {
//retrieve the data here that I need
Intent i = new Intent(this, typeof(PhotoActivity));
i.PutExtra(//add here the data I received);
StartActivityForResult(i, START_PHOTO_INTENT);
}

之后,如果 requestCode 为 START_PHOTO_INTENT,我会覆盖 OnActivityResult 并发送 finish()

这可以正常工作

我的问题是,当我从网络浏览器启动 PhotoActivity 时,如果用户(当它打开时)打开应用程序,则 MenuActivity 会显示(它应该显示)但是当用户按下它时,它会回到 PhotoActivity 而不是退出。

有没有办法改变这种行为,即使 PhotoActivity 打开,如果手动启动应用程序,PhotoActivity 也不会保留在后台?

在此先感谢您提供的任何帮助

编辑:

阅读解决方案中的链接文章和这个问题的答案后,我得出结论,为了做我想做的事,我必须在 androidmanifest 中将 LaunchMode 设置为 singleTask,并覆盖 MenuActivity 的 OnStop 并在之后发送 finish()它被执行了(如果我没有执行并且 Activity 在后台堆栈中,那么当从网页启动时它不会被 Intent 数据触发)

谢谢大家的帮助

最佳答案

查看Handling affinities Tasks and Back Stack 文档中的章节。描述了如何处理这个问题。

关于android - 您如何根据 Intent 的数据在android中启动不同的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37415919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com