对于我的应用程序,有一个标签主机,包含5个标签的5个不同活动。其中一个实际上是一个活动组,其中包含4个儿童活动,用户可以来回走动进行这些儿童活动。
现在其中一个子活动用于发布推文。 OAUTH的事情很好。但是我发现回调实际上不能指向活动,而是父活动组甚至是tab活动。我不确定它指向哪里但结果是当用户授权我的推特应用程序并返回到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";
由于
答案 0 :(得分:1)
这对我有用:在您控制的WebView中渲染oauth网页,而不是启动到浏览器应用程序。
oauth网页在调用其回调时,实际上将在webview中替换自己,其中WebViewClient可以捕获预期的URL,处理结果,并完成()webview(将其从活动堆栈中删除)
换句话说,您的清单条目可能会消失。您的回调可以是任何URL,只要您在创建的WebViewClient中识别它。