2012-02-27 18 views
0

初めてこの質問を投稿すると申し訳ありませんが、この問題については多大なご質問がありますが、多くのオプションを試した結果、ブラウザでAndroidの戻るボタンをクリックすると、oauthがブラウザに戻ります

私は、メイン画面に標準ブラウザアプリからのoauth twitterへのアクセスを要求するボタンがあるツイッターアプリケーションを持っていて、メイン画面に戻ります。私が戻るボタンを押すと、ブラウザアプリがTwitterのウェブサイトで開きます。私はマニフェストファイルでnoHistoryを試してみました。また、FLAG_ACTIVITY_NO_HISTORYとFLAG_ACTIVITY_CLEAR_TOPとIntent.FLAG_ACTIVITY_SINGLE_TOPのインテントを運行開始時に運行していない多くのシナリオで開始しました。ここで

は私の最新のコードです:ホームアクティビティで

マニフェストファイル

<activity android:name=".oauth" 
        android:label="@string/oauth_name" 
        android:noHistory="true" 
        > 
      <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="tm" android:host="twitt" /> 

      </intent-filter> 
     </activity> 
<activity android:name="com.tweetymanagerpro.Home" 
        android:label="@string/app_name" 
        android:theme="@android:style/Theme.NoTitleBar" 
        android:windowSoftInputMode="stateHidden|adjustPan"> 
       <intent-filter> 
        <action android:name="android.intent.action.VIEW" /> 
       </intent-filter> 
      </activity> 

oauth.onCreateで

Intent settingsActivity = new Intent(getBaseContext(), oauth.class); 
       settingsActivity.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
       startActivity(settingsActivity); 

次に、(次のように、私は)OAuthの呼び出しI twitterのURLをお問い合わせください

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 

      this.startActivity(intent); 

次に、oauth.onResume()で私はなどのトークンを処理し、私はそれが私を取り戻すバックボタンを押した場合、再度

Intent i = new Intent(this, Home.class); 
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
startActivity(i); 
さえずりへの接続が素晴らしい作品

、それはホームで今だけのホームを開始しますtwitterで認証しているブラウザ。

答えて

0

oauthアクティビティは実際のブラウザアクティビティですか?その場合はホームアクティビティを開始した後にfinish()と呼んでアクティビティスタックから削除することができます。

oauthアクティビティからホームアクティビティが開始されている場合は、oauthクラスがインテントに別のフラグを追加している可能性があります。ホームクラスがこのインテントを確認した場合、BACKキーを押すとデフォルトのアクションは実行されません(ブラウザアクティビティの終了と再開)。

+0

お返事ありがとうございます。ブラウザーアクティビティへの実際の呼び出しは、上記のUri.parse(authUrl)のコードです。私は仕上げを使用してみました、私はそれを追加し、結果を投稿します。 – Rob

+0

私は新しいアクティビティを呼び出すたびにfinish()コールを追加しました。ホームアクティビティに戻ったら、私は戻るボタンを押して、アクティビティ画面を起動する選択アプリの非常に速いフラッシュがあります。それ。戻るボタンの2回目のヒットでアプリが終了します。それは私のために働く、情報トライアドのおかげで! – Rob

1

oauthのWebページをWebブラウザでレンダリングすることを検討してください。ブラウザのアプリケーションには起動しないでください。

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

+0

私はそれを試していないのに、これを+1しました。私はそれが良いアイデアだと思うし、おそらくこの方法を行くだろう – Boy

+0

これは古いスレッドだが、WebViewを使ってOAuthフローを処理することを考えている人に警告する。 Googleは現在、WebViewを使用しないことを推奨しています(OAuthのた​​めに端末のブラウザの使用を促進する)(https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html) – ricalo

関連する問題