2011-10-18 45 views
0

我有一個通過Intent啓動系統瀏覽器的活動。在做之前,我做了一個HTTP GET到其他的URL。只要用戶在瀏覽器中完成他的任務(使用OAuth登錄),該GET就會得到回答。將Android活動從後臺線程移到前臺

我希望能夠關閉瀏覽器和/或讓我的應用程序的活動回到前面。

我不想使用WebView,因爲我想避免這樣的看法,即我可能試圖監視密碼。

不知道如何解決這個問題?它有可能嗎?

非常感謝!

丹尼爾

+0

我認爲,默認的瀏覽器實現陷阱回鍵(返回到之前的站點),而不是從任務堆棧中刪除瀏覽器活動(假設您沒有通過Intent Flags將瀏覽器作爲新任務啓動)。我也很好奇一個解決方案...... – ethan

+0

這不是一個後臺進程應該做的事情。而是創建一個用戶可以隨意響應的通知。 – user999717

回答

1

下面是我的項目中的技巧。

應用程序清單是非常標準:

<activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleTask" 
     android:screenOrientation="portrait" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

這裏的發送意圖重新顯示該活動的後臺線程的代碼片段:

public class AlarmThread extends Thread { 

    private int mSleepTime; 

    public AlarmThread(int sleepSeconds) { 
     super("AlarmThread"); 
     mSleepTime = sleepSeconds * 1000; 
    } 
    @Override 
    public void run() { 
     Log.i("thread", "started sleeping for " + mSleepTime + " milliseconds"); 
     try { 
      Thread.sleep(mSleepTime); 
     } catch (InterruptedException e) { 
      // ignored 
     } 
     Log.i("thread", "creating intent to bring activity to foreground"); 
     Intent intent = new Intent(MainActivity.getContext(), MainActivity.class); 
     intent.setAction(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_LAUNCHER); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     MainActivity.getContext().getApplicationContext().startActivity(intent); 
    } 
} 

注意,關鍵是在MainActivity.getContext().getApplicationContext().startActivity(intent);部分(上面的最後一行)。

在MainActivity,我添加了getContext方法:

public static Context getContext() { 
    return mInstance; 
} 

和會員 'mInstance' 設置在 '的onCreate':

private static MainActivity mInstance = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Other code.... 

    mInstance = this; 
}