我正在開發一個應用程序,該應用程序啓動瀏覽器活動以執行Twitter OAuth授權。這個過程使用了一個回調url,它將首先重新啓動啓動瀏覽器活動的活動。打開瀏覽器活動,但阻止它進入活動歷史記錄
我的問題是,瀏覽器頁面仍然保留在歷史堆棧中,當用戶從首先啓動瀏覽器的首選項活動中單擊時,它們不會回到應用程序的主要活動,而是被帶回瀏覽器。我已經嘗試向啓動的意圖添加標誌以防止歷史記錄和清除重置,但在我的手機上運行時似乎無法工作,只能在仿真器上運行。
這裏是代碼我使用啓動瀏覽器活動:
Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl));
webIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
webIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
webIntent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
ctx.startActivity(webIntent);
任何人有任何想法可能是錯誤的?呼叫
finish();
後
這將關閉其實我是想保持開放的活動,這裏是事件的順序。 應用程序以MainActivity開頭,用戶打開PreferencesActivity,然後用戶單擊Authorize Twitter,它使用上面的代碼啓動瀏覽器活動,並向它傳遞一個回調URL,其中的PreferencesActivity具有一個意圖過濾器來處理。用戶登錄到Twitter,授權它由應用程序使用,瀏覽器運行回調URL,通過它的意圖過濾器重新激活PreferencesActivity。 目前,如果用戶點擊「返回」鍵,我想讓它返回到MainActivity。 – jaredbro 2010-08-12 11:13:16
爲什麼使用IntentFilter而不是使用startActivityForResult重新激活PreferencesActivity?我不確定它是否適用於你的情況,因爲我不知道你的代碼的細節,但這可能是一個想法嗎?這樣你實際上會真的回到堆棧歷史記錄中,而不是打開另一個PreferencesActivity實例。不知道如果這就是它現在所做的,更容易看到與完整的代碼,回調,意圖過濾器等。 – 2010-08-12 12:10:34