我有一個通過Intent啓動系統瀏覽器的活動。在做之前,我做了一個HTTP GET到其他的URL。只要用戶在瀏覽器中完成他的任務(使用OAuth登錄),該GET就會得到回答。將Android活動從後臺線程移到前臺
我希望能夠關閉瀏覽器和/或讓我的應用程序的活動回到前面。
我不想使用WebView,因爲我想避免這樣的看法,即我可能試圖監視密碼。
不知道如何解決這個問題?它有可能嗎?
非常感謝!
丹尼爾
我有一個通過Intent啓動系統瀏覽器的活動。在做之前,我做了一個HTTP GET到其他的URL。只要用戶在瀏覽器中完成他的任務(使用OAuth登錄),該GET就會得到回答。將Android活動從後臺線程移到前臺
我希望能夠關閉瀏覽器和/或讓我的應用程序的活動回到前面。
我不想使用WebView,因爲我想避免這樣的看法,即我可能試圖監視密碼。
不知道如何解決這個問題?它有可能嗎?
非常感謝!
丹尼爾
確保OAuth的打開URL這是像yourapp://成功
接下來需要添加一個意圖過濾器來處理這個自定義協議和地址。更多細節在http://developer.android.com/guide/topics/intents/intents-filters.html#ifs
很酷,聽起來很合理。謝謝! – Daniel
下面是我的項目中的技巧。
應用程序清單是非常標準:
<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;
}
我認爲,默認的瀏覽器實現陷阱回鍵(返回到之前的站點),而不是從任務堆棧中刪除瀏覽器活動(假設您沒有通過Intent Flags將瀏覽器作爲新任務啓動)。我也很好奇一個解決方案...... – ethan
這不是一個後臺進程應該做的事情。而是創建一個用戶可以隨意響應的通知。 – user999717