浏览器回调和Android Activity堆栈疯狂

Uta*_*aal 6 android oauth

我正在努力使用自定义scheme-> intent_filter技术的无处不在的回调来获得OAuth授权的特定行为.

我的应用程序注册了SEND操作,并在调用时启动一项服务,该服务反过来检查用户是否已获得授权,如果没有,则生成一个活动(OAuthActivity)以请求登录.

请记住,在此之前发生的前景活动可能是任何事情.然后,活动启动VIEW意图,在浏览器中打开auth页面; 后者调用精心设计的回调(使用manifest中定义的自定义方案)并唤醒OAuthActivity.

OAuthActivity目前有,launchMode="singleTask"但这与堆栈视角没有区别(它在回调时会显示在顶部).

有没有办法可以清除活动堆栈并回到用户正在做的事情,而不是强迫他"推回"浏览器活动?(然后我会在后台成功提交内容时显示通知)

有没有人有任何指针?感谢您的阅读

lar*_*am1 2

然后该活动启动 VIEW 意图以在浏览器中打开身份验证页面

那就是问题所在。这对我有用:在您控制的 Web 视图中渲染 oauth 网页,而不是启动到浏览器应用程序。

oauth 网页在调用其回调时,实际上会在 webview 中替换自身,您的 WebViewClient 可以在其中捕获预期的 URL、处理结果并完成 webview(将其从活动堆栈中删除)。