2012-08-09 80 views
3

讓我用細節清除問題。我在我的應用程序中使用twitter4j。它運行良好,你知道Intent.ACTION_VIEW正在調用回到Activity中的onNewIntent方法。如何清除沒有新意圖的活動堆棧

我滿足這樣的回調:直到我按後退按鈕

protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    final Uri uri = intent.getData(); 
    if (uri != null && uri.getScheme().equals(Constants.OAUTH_CALLBACK_SCHEME)) { 
     Log.d("TAG", "Twitter callback -> New Intent"); 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
     new RetrieveAccessTokenTask(this,consumer, provider, prefs). execute(uri); 
    } 
} 

一切進展順利。當我按下活動返回包含授權頁面的網頁時。

有什麼方法可以清除Activity棧onNewIntent?我不想將同一個Intent稱爲重新啓動,並且不確定任何不同的出路。

更新:我打電話這樣的身份驗證頁面:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_FROM_BACKGROUND); 

你能給什麼建議?

回答

3

您沒有在瀏覽器中打開驗證頁面的代碼。調用瀏覽器視圖時設置了哪些標誌?我認爲這是你的問題所在。

是否使用類似...

Intent webIntent = new Intent(Intent.ACTION_VIEW, 
       Uri.parse(token.getAuthorizationURL())); 
webIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
+0

更新我的答案,什麼是錯的標誌?謝謝btw。 – Martin 2012-08-09 09:18:25

+1

我認爲問題可能是其他標誌被設置。你想創建一個新的意圖,而不是使用已經在後臺運行的瀏覽器。嘗試刪除SINGLE_TOP和FROM_BACKGROUND。然後,您可以一次將它們添加回來,以確定哪個問題導致問題。 – 2012-08-09 10:17:31

+0

謝謝菲爾,我刪除了兩個並解決了這個問題。 – Martin 2012-08-09 11:02:08