Android 中的程式跳至瀏覽器後按下返回的小記錄


一般的切換到不同 Activity 時,都有兩種情況

  1. Activity A -> Activity B
  2. Activity A -> Web Browser -> Activity A

而情況 1 理所當然是比較簡單.只要這樣

1
2
Intent i = new Intent(this, ActivityB.class);
startActivity(i);

而情況 2 就只需要這樣
注:

  1. 以下這樣做,當用戶由 Browser 跳至 Activity B 後
  2. 用戶再按下 Back 時,程式便不會跳回至 Browser 界面

**.例如 OAuth 時便會常常應用

1
2
3
4
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse(url));
startActivity(i);

再者當 Intent 的 Action 為 ACTION_VIEW 時,
便會自動處理 Data 中的 Scheme
(如 Url 中的 http 開頭,對應的動作便是打開 Browser)

再者,我們也可以自定自身的 Scheme
方法如下:

  1. 打開 AndroidManifest.xml
  2. 找到 Activity B 加入對應的 intent-filter 屬性
    1
    2
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="[Scheme 的名稱]" />
  3. 之後就可以通過 [Scheme 的名稱]://xxxx 來連結程式
  4. 所以 web browser 就可以通過上方的格式來連結回到程式