appA 應用
/**
* 通過包名拉起app
* @param packagename 要拉起app的包名
*/
public static void doStartApplicationWithPackageName(String packagename) {
// 通過包名獲取要跳轉的app,創建intent對象
Intent intent = PageManager.getCurrentActivity().getPackageManager().getLaunchIntentForPackage(packagename);
//測試參數隨機數
Random rd = new Random();
// 這裏如果intent爲空,就說名沒有安裝要跳轉的應用嘛
if (intent != null) {
// 這裏跟Activity傳遞參數一樣的嘛,不要擔心怎麼傳遞參數,還有接收參數也是跟Activity和Activity傳參數一樣
intent.putExtra("name", "name"+":"+rd.nextInt(100));
intent.putExtra("birthday", "birthday"+":"+rd.nextInt(100));
PageManager.getCurrentActivity().startActivity(intent);
} else {
// 沒有安裝要跳轉的app應用,提醒一下
Toast.makeText(PageManager.getCurrentActivity().getApplicationContext(), "喲,趕緊下載安裝這個APP吧", Toast.LENGTH_LONG).show();
}
}
appB應用
AndroidManifest.xml
<activity android:name=".WellcomeActivity"
android:launchMode="singleInstance"><!--必須設置成這個模式-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
啓動頁面可以獲取到參數 根據參數跳轉不同頁面 有可能singleInstance加載動畫和我們應用內部加載動畫不一致 我們也可以自定activity啓動關閉動畫
public class WellcomeActivity extends AppCompatActivity {
private final static int MSG_200 = 200;
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_200:
Intent intent = new Intent(WellcomeActivity.this, MainActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.right_in,R.anim.right_out);//爲了使動畫統一
finish();
break;
default:
break;
}
}
};
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wellcome);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if (bundle != null) {
String name = bundle.getString("name");
String birthday = bundle.getString("birthday");
if (name != null && birthday != null) {
Toast.makeText(getApplicationContext(), "name:" + name + " birthday:" + birthday, Toast.LENGTH_SHORT).show();
}
}
mHandler.sendEmptyMessageDelayed(MSG_200, 3000);
}
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.right_in,R.anim.right_out);//爲了使動畫統一
}
}
right_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="300"/>
</set>
right_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="300"/>
</set>
效果圖