我正在使用Twitter4J通过Twitter进行授权,该活动不是应用程序的启动活动。到目前为止,我有一个名为'AuthorisationActivity'的单独活动,它返回一个有效的Twitter4j twitter对象的意图,然后可以被调用活动'CallAuthorisationActivity'使用。
来自twitter的回调工作正常,我最终在AuthorisationActivity中获得了授权的twitter对象,但现在我发现自己处于catch22状态:
1 - 如果我没有将AuthorisationActivity的启动模式设置为'singleTask',则回调将不会返回到AuthorisationActivity的onNewIntent()方法,而是返回其onCreate()方法并尝试在无限循环中进行身份验证。
2 - 如果我将AuthorisationActivity的启动模式设置为'singleTask',它将返回onNewIntent(),但由于它现在处于单独的任务中,因此它不会返回到调用活动的onActivityResult()方法。
我只是Android开发的初学者,并且由于身份验证有效,我认为这个问题更多地与管理活动的方式有关。以下是清单的简要摘录:
<activity
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".CallAuthorisationActivity">
</activity>
<activity
android:name=".AuthorisationActivity"
android:label="@string/title_activity_authorisation">
<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="tweetree" android:host="callback" />
</intent-filter>
</activity>
在代码中,CallAuthorisationActivity只是将一个带有startActivityForResult(...)的intent发送给AuthorisationActivity,并按照标准捕获onActivityResult(...)中的结果。 任何帮助将不胜感激,谢谢
答案 0 :(得分:0)
经过几个小时的研究后,我发现了这个链接http://gtware.blogspot.com.au/2012/07/tweeting-from-android-apps-using.html#comment-form 经过一些变化后,我得到了一个优雅的解决方案。
正如我在该页面上所评论的那样:由于浏览器集成在应用程序中,因此使用WebView可以更轻松地处理回调。因此根本不需要意图过滤器。
我刚刚改变了一些你可能感兴趣的事情:
1 - 我正在使用Twitter对象而不是AsyncTwitter。 Twitter对象似乎更容易从Twitter获取GET数据,例如来自用户搜索API,并且它不需要TwitterListener。
2 - 我的虚拟设备在调用twitter.getOAuthRequestToken()和twitter.getOAuthAccessToken()时崩溃,即使使用AsyncTwitter对象,所以我将它们封装在自己的AsyncTask线程中。
希望这可能有所帮助...