【问题标题】:How can I return to a child activity, after finishing OAUTH for twitter?完成 twitter 的 OAUTH 后,如何返回子活动?
【发布时间】:2011-09-21 19:31:46
【问题描述】:

2013 年 9 月 23 日更新

这个问题已经过时了,因为下面提到的东西现在已经被弃用了 80%。


对于我的应用程序,有一个选项卡主机,其中包含 5 个选项卡的 5 种不同活动。其中一个实际上是一个活动组,其中包含 4 个子活动,用户可以为这些子活动来回切换。

现在其中一项子活动用于发布推文。 OAUTH 的东西很好。但是我发现回调实际上不能指向活动,而是指向父活动组甚至选项卡活动。我不确定它指向哪里,但结果是当用户授权我的 twitter 应用程序并返回到 android 应用程序时,活动将重新启动并调用 onCreate 而不是 onResume 或 onNewIntent。这会导致无限循环,要求用户一次又一次地进行身份验证。我尝试添加 android:launch:singleInstance 但这没有帮助。

如果我不是作为一个孩子开始活动而是一个新活动,一切都很好。我可以回到 onNewIntent 并成功发布推文。所以我很确定原因是活动组或选项卡活动。

我实际上不是很熟悉意图过滤器在选项卡/活动组下的工作原理,谁能为我解释一下这个案例?

Manifest.xml      
<activity android:name="TwitterAct" android:launchMode="singleInstance">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="myapp" android:host="twitteract" />       
        </intent-filter>
</activity>

TwitterAct
private final String CALLBACKURL = "myapp://twitteract"; 

谢谢

【问题讨论】:

    标签: android android-tabhost twitter-oauth intentfilter activitygroup


    【解决方案1】:

    不久前我问了一个类似的问题,并得到了一些人的回答:

    Is there a production quality OAuth sample for Android?

    我使用singleTask而不是singleInstance将意图路由回原始活动,但似乎人们在这两种方式上都取得了成功。看起来大多数人在创建 Intent 以启动浏览器时添加标志 (Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_FROM_BACKGROUND)。不完全确定它们将如何与 singleInstance 交互,但可能会影响 Intent 的路由位置。

    【讨论】:

    • 我试过了,当我使用单一意图时它可以工作。但是,相同的方法不适用于活动组的子意图。无论如何,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多