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);
從 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");
第一個引數是目標 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");
Bundle bundle = new Bundle();
bundle.putString("FIRST_APP_KEY", "你好 ,MainActivity");
intent.putExtras(bundle);
}
public void go2Login(View view){
bundle.putString("FIRST_APP_KEY", "你好 ,LoginActivity");
在 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 間的跳轉及傳遞資料就結束啦~
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);
從 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 間的跳轉及傳遞資料就結束啦~