Android OAuth 实施使接收共享 activity 停止
Android OAuth implementation makes receiving share activity stop
我遇到 activity 问题,其中 onStop
破坏了我的 OAuth
身份验证过程。
首先简单解释一下我的应用程序的上下文:
我有这个 activity(我们称之为 receiveSharedDataActivity
),它处理从其他应用程序发送的传入数据。此 activity 是使用 Android 开发者网站的以下示例制作的:http://developer.android.com/training/sharing/receive.html.
我的应用程序要求用户使用电子邮件和密码或使用 Facebook 或 Twitter OAuth 登录名登录。用户可能从未打开过该应用程序,因此尚未登录。 (可能性很小,但还是会发生。)
问题(挑战):
因此,当用户决定将一些数据共享到我的应用程序但尚未登录时,我会在 receiveSharedDataActivity
using fragments 中向他显示 3 个登录选项(电子邮件、Facebook 和 Twitter) .这样他就可以先验证自己的身份,然后再处理数据。当用户选择使用 Facebook 和 Twitter OAuth 登录选项登录时,他会从 Facebook 或 Twitter 重定向到一个新的 activity,他需要在其中登录并授予我的应用程序访问其用户数据的权限。到目前为止一切顺利。因为当用户被重定向到这个新的 activity 时,receiveSharedDataActivity
会自动使用 onStop 停止,因为它不再对用户可见。当用户随后登录 Facebook 或 Twitter activity 并被发送回 receiveSharedDataActivity
时,不再有 receiveSharedDataActivity
,因为它已停止。因此,用户最终会转到用户决定从中共享数据的另一个应用程序。
问题:
如何防止 receiveSharedDataActivity
在用户登录 Facebook 或 Twitter activity 时停止?
我很期待你的解决方案,因为我一直被这个问题困扰。
好消息!我能够解决这个问题。一直以来我都认为这与在启动 receiveSharedDataActivity
时传递正确的 Intent 标志有关。傻我...
问题是我的 receiveSharedDataActivity
在 AndroidManifest.xml 中设置了 noHistory:true
参数。我需要这个,因为显然我不希望将此 activity 添加到后台。但是 noHistory
参数让我的 activity 在 activity 对用户不再可见后直接销毁了自己。这发生在 OAuth 登录 activity 开始时。所以在 OAuth 登录 activity 完成后当然没有 activity 到 return 因为 receiveSharedDataActivity
被简单地破坏了。
当我删除 noHistory
参数时,activity 不再破坏自身并很好地调用了 onRestart
方法,我现在可以在其中处理其余的 Oauth 过程。我能够通过在开始一个新的 activity 后立即调用 finish()
来阻止 activity 被添加到后台堆栈。这样 activity 就会自行销毁并且不会添加到后台堆栈中。
我遇到 activity 问题,其中 onStop
破坏了我的 OAuth
身份验证过程。
首先简单解释一下我的应用程序的上下文:
我有这个 activity(我们称之为 receiveSharedDataActivity
),它处理从其他应用程序发送的传入数据。此 activity 是使用 Android 开发者网站的以下示例制作的:http://developer.android.com/training/sharing/receive.html.
我的应用程序要求用户使用电子邮件和密码或使用 Facebook 或 Twitter OAuth 登录名登录。用户可能从未打开过该应用程序,因此尚未登录。 (可能性很小,但还是会发生。)
问题(挑战):
因此,当用户决定将一些数据共享到我的应用程序但尚未登录时,我会在 receiveSharedDataActivity
using fragments 中向他显示 3 个登录选项(电子邮件、Facebook 和 Twitter) .这样他就可以先验证自己的身份,然后再处理数据。当用户选择使用 Facebook 和 Twitter OAuth 登录选项登录时,他会从 Facebook 或 Twitter 重定向到一个新的 activity,他需要在其中登录并授予我的应用程序访问其用户数据的权限。到目前为止一切顺利。因为当用户被重定向到这个新的 activity 时,receiveSharedDataActivity
会自动使用 onStop 停止,因为它不再对用户可见。当用户随后登录 Facebook 或 Twitter activity 并被发送回 receiveSharedDataActivity
时,不再有 receiveSharedDataActivity
,因为它已停止。因此,用户最终会转到用户决定从中共享数据的另一个应用程序。
问题:
如何防止 receiveSharedDataActivity
在用户登录 Facebook 或 Twitter activity 时停止?
我很期待你的解决方案,因为我一直被这个问题困扰。
好消息!我能够解决这个问题。一直以来我都认为这与在启动 receiveSharedDataActivity
时传递正确的 Intent 标志有关。傻我...
问题是我的 receiveSharedDataActivity
在 AndroidManifest.xml 中设置了 noHistory:true
参数。我需要这个,因为显然我不希望将此 activity 添加到后台。但是 noHistory
参数让我的 activity 在 activity 对用户不再可见后直接销毁了自己。这发生在 OAuth 登录 activity 开始时。所以在 OAuth 登录 activity 完成后当然没有 activity 到 return 因为 receiveSharedDataActivity
被简单地破坏了。
当我删除 noHistory
参数时,activity 不再破坏自身并很好地调用了 onRestart
方法,我现在可以在其中处理其余的 Oauth 过程。我能够通过在开始一个新的 activity 后立即调用 finish()
来阻止 activity 被添加到后台堆栈。这样 activity 就会自行销毁并且不会添加到后台堆栈中。