2013 年 9 月 23 日更新
以下で言及されていることは現在80%非推奨であるため、この質問は時代遅れです。
私のアプリケーションには、5 つのタブに対して 5 つの異なるアクティビティを持つ 1 つのタブ ホストがあります。そのうちの 1 つは、実際には 4 つの子アクティビティを含むアクティビティ グループであり、ユーザーはこれらの子アクティビティを行ったり来たりできます。
これで、子アクティビティの 1 つがツイートの投稿に使用されます。OAUTH は問題ありません。ただし、コールバックは実際にはアクティビティを指すことはできませんが、親アクティビティ グループまたはタブ アクティビティさえも指すことができません。それがどこを指しているのかはわかりませんが、結果として、ユーザーが Twitter アプリを承認して Android アプリに戻ると、アクティビティが最初から開始され、onResume または onNewIntent の代わりに onCreate が呼び出されます。これにより無限ループが発生し、ユーザーに何度も認証を求めます。android:launch:singleInstance を追加しようとしましたが、これは役に立ちません。
アクティビティを子として開始するのではなく、新しいアクティビティとして開始する場合は、すべて問題ありません。onNewIntent に戻って、ツイートを正常に投稿できます。したがって、原因はアクティビティ グループまたはタブ アクティビティであると確信しています。
タブ/アクティビティ グループでインテント フィルターがどのように機能するかについては、実際にはあまり詳しくありません。誰か説明してもらえますか?
Manifest.xml
<activity android:name="TwitterAct" android:launchMode="singleInstance">
<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="myapp" android:host="twitteract" />
</intent-filter>
</activity>
TwitterAct
private final String CALLBACKURL = "myapp://twitteract";
ありがとう