我有一个带有大量活动的 Android 应用程序。堆栈中的一项活动(我们称之为LoginSettings
)需要登录到 OAuth 服务。我给了它一个通过Intent
. LoginSettings
不能使用singleTask
orsingleInstance
启动模式,因为它需要保持在其先前活动的堆栈顶部。也就是说,如果用户从 按下,堆栈LoginSettings
中的先前活动需要显示,并且如果用户稍后重新启动我的应用程序,它无法重新启动显示堆栈中的先前活动。像这样做一样打破中间的堆栈singleTask
是没有用的。
我已经使用了网络浏览器和自定义回调 URL 和意图过滤器的技巧,但是因为我不能使用singleTask
,我无法将结果放入同一个实例中LoginSettings
:它总是创建一个新活动,即使launchMode
是singleTop
。期望的行为是,在用户登录后,浏览器窗口消失并且用户看到LoginSettings
,仍然在其后面的堆栈的其余部分。
我想使用浏览器而不是 aWebView
来进行身份验证:首先,因为它向用户显示他们正在真正访问目标网站,而不是向我的应用程序提供密码;其次,因为用户可能已经在浏览器中保存了他们的密码(或者可能已经登录)。