アプリケーションの起動アクティビティではないアクティビティから 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(...) で結果をキャッチします。助けていただければ幸いです、ありがとう