我使用 list 中的 intent-filter 在我的应用程序中使用 Twitter OAuth。我是如何实现它的,一旦用户点击一个按钮通过 Twitter 发帖,我就会启动一个新的 Activity(我们称之为 TwitterLoginActivity),新的 TwitterLoginActivity 创建一个带有 authUrl 的新 Intent,如下所示:
Intent oauthIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl));
这将打开一个浏览器,我授权我的应用程序,它在 TwitterLoginActivity 的 onResume()
函数中返回。在这一点上,我可以很好地发布到 Twitter 并对此 Activity 执行 finish()。
所有这一切都像冠军一样工作,但在调用此 finish() 时,它返回到我刚刚授权的 Twitter.com 网页。我不太了解 Activity 堆栈的工作原理,但无论如何都可以删除我看到的 Twitter.com 的所有 WebView,并且在 finish() 上它只是返回到我的应用程序中用户所在的原始点点击了发布按钮?
最佳答案
我不知道你是否解决了你的问题,但昨天我遇到了同样的问题,我是这样解决的:
1) 为了启动 WebBrowser 以登录 Twitter,添加以下标志:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl));
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_FROM_BACKGROUND);
startActivity(intent);
2) 在声明启动 Intent 的 TwitterLoginActivity 的 list 中,添加属性:
android:launchMode="singleTask"
3) 完成 Twitter 登录后,WebBrowser 完成并返回到 TwitterLoginActivity,但由于 singleTask 启动模式,onCreate 未被调用,而是调用了 onNewIntent。要保存 token 和 token secret ,您必须将代码从 onResume 移动到 OnNewIntent。
现在,如果您按下后退按钮或完成 TwitterLoginActivity,它会转到上一个 Activity 并且 WebBrowser 再也不会出现。
希望对您有所帮助!
关于android - 在 Twitter OAuth 完成后返回 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5427266/