【问题标题】:Returning to activity after Twitter OAuth finishedTwitter OAuth 完成后返回活动
【发布时间】:2012-10-20 08:51:33
【问题描述】:

我使用清单中的意图过滤器在我的应用程序中使用 Twitter OAuth。我是如何实现它的,一旦用户单击一个按钮通过 Twitter 发布,我就会启动一个新的 Activity(让我们称之为 TwitterLoginActivity),新的 TwitterLoginActivity 使用 authUrl 创建一个新的 Intent,如下所示:

Intent oauthIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl));

这会打开一个浏览器,我授权我的应用程序,它会在 TwitterLoginActivity 的 onResume() 函数中返回。在这一点上,我可以很好地发布到 twitter 并对此活动执行 finish()。

这一切都像一个冠军,但在调用这个finish()时,它返回到我刚刚授权的Twitter.com网页。我不擅长理解活动堆栈的工作原理,但是无论如何要删除我看到的 Twitter.com 的所有 WebView,并且在完成()上它只是返回到我的应用程序中用户的原始点有点击发帖按钮吗?

【问题讨论】:

  • 你找到解决办法了吗?

标签: android twitter-oauth


【解决方案1】:

我不知道你是否解决了你的问题,但昨天我遇到了同样的问题,我是这样解决的:

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) 在 Manifest 中,声明启动 Intent 的 TwitterLoginActivity,添加属性:

android:launchMode="singleTask"

3) 使用 Twitter 登录完成后,WebBrowser 完成并返回 TwitterLoginActivity,但由于 singleTask 启动模式,未调用 onCreate,而是调用了 onNewIntent。要保存令牌和令牌机密,您必须将代码从 onResume 移动到 OnNewIntent。

现在,如果您按下后退按钮或完成 TwitterLoginActivity,它会转到上一个活动,并且 WebBrowser 再也不会出现。

我希望这会有所帮助!

【讨论】:

    【解决方案2】:

    这对我有用:在您控制的 WebView 中呈现 oauth 网页,而不是启动到浏览器应用程序。

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

    换句话说,WebView 将由您直接控制,而不是浏览器。

    【讨论】:

    【解决方案3】:

    这听起来是使用 Activity.startActivityForResult() 而不是 Activity.startActivity() 的最佳时机。您的原始活动只需要您的 TwitterLoginActivity 来登录用户,因此一旦完成,它应该返回到您的原始活动。

    实现 onActivityResult() 来处理来自 TwitterLoginActivity 的响应。

    Read about it here

    【讨论】:

    • 嗯,可以。那么在 onActivityResult 处理程序中,我如何将 UI 焦点带回该活动?活动堆栈仍然希望指向浏览器。我可以在活动中执行某种“展示”功能吗?
    • 是的,这不太适合我的目的。似乎我的两个 TwitterLoginActivity 正在创建中。我在单击按钮启动 OAuth 过程时创建的原始一个,然后是在 Intent-Filter 启动它时创建的一个。所以第二个被杀死了,但它最终只是将它返回到仍然显示 Twitter.com 屏幕的原始状态。
    猜你喜欢
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多