2013-01-01 14 views
0

我使用Twitter4J授權與Twitter不是應用程序的啓動活動。到目前爲止,我有一個名爲'AuthorisationActivity'的單獨活動,它用一個有效的Twitter4j twitter對象返回一個intent,然後可以被調用activity'CallAuthorisationActivity'使用。
從twitter的回調工作正常,我最終在AuthorisationActivity中獲得授權的Twitter對象,但現在我發現自己處於catch22的情況: 1 - 如果我不將AuthorisationActivity的啓動模式設置爲'singleTask',則回調將不會返回到AuthorizationActivity的onNewIntent()方法,而是返回到onCreate()方法並嘗試在無限循環中進行身份驗證。 2 - 如果我將AuthorisationActivity的啓動模式設置爲'singleTask',它將返回到onNewIntent(),但由於它現在處於單獨任務中,因此它不會返回到調用活動的onActivityResult()方法。Android的推特授權回調

我只是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(...)來AuthorisationActivity意圖和捕捉結果在onActivityResult(...)爲是標準的。 任何幫助,將不勝感激,謝謝

回答

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 - 即使使用AsyncTwitter對象調用twitter.getOAuthRequestToken()和twitter.getOAuthAccessToken()時,我的虛擬設備也會崩潰,所以我將它們封裝在自己的AsyncTask線程中。

希望這可以幫助...