3

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"; 

ありがとう

4

1 に答える 1

0

少し前に同様の質問をしたところ、数人から回答が得られました。

Android 用の製品品質の OAuth サンプルはありますか?

singleInstance の代わりに singleTask を使用してインテントを元のアクティビティにルーティングするようにしましたが、人々は両方の方法で成功しているようです。ブラウザーを起動するためのインテントを作成するときに、ほとんどの人がフラグ (Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_FROM_BACKGROUND) を追加するようです。それらが singleInstance とどのように相互作用するかは正確にはわかりませんが、インテントがルーティングされる場所に影響を与える可能性があります。

于 2011-07-19T04:23:36.323 に答える