0

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

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

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

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

清单.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>

推特法案

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

谢谢

4

1 回答 1

1

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

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

换句话说,您的清单条目可以消失。您的回调可以是任何 URL,只要您在创建的 WebViewClient 中识别它即可。

于 2012-10-20T00:49:05.630 回答