0

アプリケーションの起動アクティビティではないアクティビティから Twitter で認証するために Twitter4J を使用しています。これまでのところ、有効な Twitter4j twitter オブジェクトを含むインテントを返す「AuthorisationActivity」という別のアクティビティがあり、呼び出し元のアクティビティ「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(...) を含むインテントを AuthorisationActivity に送信し、標準のように onActivityResult(...) で結果をキャッチします。助けていただければ幸いです、ありがとう

4

1 に答える 1

0

数時間の調査の後、このリンクhttp://gtware.blogspot.com.au/2012/07/tweeting-from-android-apps-using.html#comment-form にたどり着きました。いくつかの変更を加えた後、エレガントな解決。

そのページにコメントしたように: WebView を使用すると、ブラウザがアプリケーションに統合されているため、コールバックの処理がはるかに簡単になります。したがって、インテント フィルターはまったく必要ありません。

私はあなたが興味を持っているかもしれないいくつかのことを変更しました:

1 - AsyncTwitter の代わりに Twitter オブジェクトを使用しています。Twitter オブジェクトを使用すると、ユーザー検索 API などから、Twitter から GET データを簡単に取得できるようになり、TwitterListener は必要ありません。

2 - twitter.getOAuthRequestToken() および twitter.getOAuthAccessToken() を呼び出すと、AsyncTwitter オブジェクトを使用しても仮想デバイスがクラッシュするため、これらを独自の AsyncTask スレッドにカプセル化しました。

これが役立つことを願っています...

于 2013-01-01T12:04:41.813 に答える