Android twitter授权回拨

时间:2013-01-01 02:55:23

标签: android-twitter

我正在使用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(...)中的结果。 任何帮助将不胜感激,谢谢

1 个答案:

答案 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线程中。

希望这可能有所帮助...