3

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"; 

谢谢

4

1 回答 1

0

前段时间问了一个类似的问题,得到了几个人的回答:

是否有适用于 Android 的生产质量 OAuth 示例?

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

于 2011-07-19T04:23:36.323 回答