Android從一個APP跳轉到另一個APP的主界面或某頁面,並傳遞數據

1. Android 從一個 APP 跳轉到另一個 APP 主界面

        Intent intent = new Intent(Intent.ACTION_MAIN);
        //前提:知道要跳轉應用的包名、類名
        ComponentName componentName = new ComponentName("com.example.hust_twj.secondapp", "com.example.hust_twj.secondapp.MainActivity");
        intent.setComponent(componentName);
        startActivity(intent);

本 Demo 包括 2 個測試的 APP ,FirstApp 主界面有 2 個按鈕,分別進入 SecondApp 的主界面和某指定的界面;而SecondApp 主界面僅有一個登陸的按鈕,點擊該按鈕可以進入登陸界面。

從 FirstApp 進入 SecondApp 的主界面跳轉截圖(代碼如上):


這裏寫圖片描述

2. Android 從一個 APP 跳轉到另一個 APP 的某 activity

(1) 把要跳轉的目標 APP 的指定 activity 暴露出來
在 AnroidManifest 文件中給 activity 節點設置 Android:exported="true",該屬性表示當前 activity 能否被另外一個Application 的組件啓動,true允許啓動,false不允許。默認是false。注意:該屬性是四大組件都擁有的。

      <activity
          android:name=".LoginActivity"
          android:exported="true">
      </activity>

(2) 啓動/跳轉

        Intent intent = new Intent();
        intent.setClassName("com.example.hust_twj.secondapp", "com.example.hust_twj.secondapp.LoginActivity");
        startActivity(intent); 

第一個參數是目標 APP 的包名,第二個參數是目標 APP 的 activity 的全稱。如果目標 APP 的 activity 沒有暴露入口,則會報權限禁止錯誤。

從 FirstApp 進入SecondApp 的某指定界面(登陸界面):


這裏寫圖片描述

3. 跳轉時使用 Bundle 傳遞數據

在 FirstApp 中使用 Bundle 傳遞數據:

  public void go2Main(View view){
        ComponentName componentName = new ComponentName("com.example.hust_twj.secondapp","com.example.hust_twj.secondapp.MainActivity");
        Intent intent = new Intent();
        Bundle bundle = new Bundle();
        bundle.putString("FIRST_APP_KEY", "你好 ,MainActivity");
        intent.putExtras(bundle);
        intent.setComponent(componentName);
        startActivity(intent);
    }

    public void go2Login(View view){
        Intent intent = new Intent();
        intent.setClassName("com.example.hust_twj.secondapp", "com.example.hust_twj.secondapp.LoginActivity");
        Bundle bundle = new Bundle();
        bundle.putString("FIRST_APP_KEY", "你好 ,LoginActivity");
        intent.putExtras(bundle);
        startActivity(intent);
    }

在 SecondApp 中,假如 MainActivity 和 LoginActivity 都有 TextView 用於顯示從 FirstApp 中傳過來的數據(本 Demo 中沒有 TextView ),那麼在 MainActivity 和 LoginActivity 中接收數據如下:

        TextView mTextView = (TextView) findViewById(R.id.tv_main);
        Bundle bundle = this.getIntent().getExtras();
        if (bundle != null){ //防止直接啓動MainActivity時空指針閃退
            String value = bundle.getString("FIRST_APP_KEY");
            mTextView.setText(value);
        }

至此, APP 間的跳轉及傳遞數據就結束啦~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章