android - 在 Twitter OAuth 完成后返回 Activity

标签 android twitter-oauth

我使用 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/

相关文章:

android - 知道何时显示密码锁

android - 在 Android Webview 中加载 pdf 或 url

ios - 使用 Swift 在 Twitter 上实现单用户 OAuth

java - twitter4j 未找到身份验证挑战

java - angularjs 和 Java 中的 Twitter 登录集成

objective-c - 自定义 iOS Twitter 身份验证页面?

推特 API : timestamp out of Bounds when calling oauth request_token

android - 如何最小化所有打开的应用程序并显示主屏幕?

android - 这些 Intent 有什么区别?

java - Android中如何不使用getLastKnownLocation方法获取当前经纬度?