ツイートを投稿する前に、TwitterのoAuthフローを使用してユーザーをTwitterで認証するプロジェクトがあります。
問題は、フローの最後にアプリケーションに戻るoAuthリダイレクトが機能しないことですが、ユーザーがフロー用のTwitterアプリを選択した場合のみです。つまり、「このアクションを...で完了する」にはブラウザーとTwitterの両方があります。
これは、ブラウザーを使用してoAuthフローが完了すると100%機能します。Twitterページがリダイレクトされ、アプリ固有のURLがキャッチされ、onResumeが呼び出されたときにアプリに正しいインテントが渡されます。
ネイティブのAndroidTwitterアプリは、「アプリケーションにリダイレクトします。これには少し時間がかかる場合があります」と表示されるところまで進み、リダイレクトされません。実際、ネイティブのTwitterアプリに入ると、認証プロセスに関してlogcatにそれ以上何もありません。また、前のページの[キャンセル]ボタンをクリックしても何も起こりません。ログキャットには、Twitterネイティブアプリが元のアプリにコールバックしようとしていることを示すものは何も表示されません。
oAuthの「AuthUrl」インテントが実行された時点からのログキャットは次のとおりです。
I/ActivityManager( 251): START {act=android.intent.action.VIEW dat=https://twitter.com/oauth/authorize?oauth_token=zpY3RH5tzyM2SuB2TfNfI1tou8VpLTw14xNmMFs8A flg=0x3000000 cmp=com.twitter.android/.UrlInterpreterActivity u=0} from pid 251
I/ActivityManager( 251): START {dat=https://twitter.com/oauth/authorize?oauth_token=zpY3RH5tzyM2SuB2TfNfI1tou8VpLTw14xNmMFs8A cmp=com.twitter.android/.WebViewActivity u=0} from pid 8560
V/PhoneStatusBar( 352): setLightsOn(true)
I/ActivityManager( 251): Displayed com.twitter.android/.WebViewActivity: +225ms (total +267ms)
D/TilesManager( 8560): new EGLContext from framework: 5151cd88
D/GLWebViewState( 8560): Reinit shader
D/GLWebViewState( 8560): Reinit transferQueue
W/ThrottleService( 251): unable to find stats for iface rmnet0
D/AudioHardware( 90): AudioHardware pcm playback is going to standby.
D/AudioHardware( 90): closePcmOut_l() mPcmOpenCnt: 1
D/SizeAdaptiveLayout( 352): com.android.internal.widget.SizeAdaptiveLayout@42100048child view android.widget.FrameLayout@420a2188 measured out of bounds at 95px clamped to 96px
D/SizeAdaptiveLayout( 352): com.android.internal.widget.SizeAdaptiveLayout@41e4ac40child view android.widget.FrameLayout@4204c8b8 measured out of bounds at 95px clamped to 96px
D/dalvikvm( 8272): WAIT_FOR_CONCURRENT_GC blocked 0ms
D/dalvikvm( 8272): GC_EXPLICIT freed 365K, 11% free 10374K/11655K, paused 2ms+3ms, total 36ms
Twitterアプリケーションの設定で「ダミーURL」の問題をよく知っていますが、ブラウザのフローは問題なく機能するため、それが問題であるとはわかりません。
Nexus S + Android 4.1.1、LG Sprint(モデルは不明)+Android2.3.3で実行されたテスト。動作は両方のシナリオで同じです。