0

私のアプリケーションでは、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"; 

ありがとう

4

1 に答える 1

1

これは私にとってはうまくいきます。ブラウザアプリを起動するのではなく、制御するWebViewでoauthWebページをレンダリングします。

oauth Webページは、コールバックを呼び出すと、実際にはWebビュー内でそれ自体を置き換えます。WebViewClientは、その予想されるURLをキャッチし、結果を処理して、Webビューをfinish()します(アクティビティスタックから削除します)。

つまり、マニフェストエントリが消えることがあります。コールバックは、作成したWebViewClientで認識できる限り、任意のURLにすることができます。

于 2012-10-20T00:49:05.630 に答える