应用间的跳转方式:
1:跳转主activity
启动非主的activity,非主的activity不能直接启动,必须要在manifest里面设置exported属性为true,表示此activity对外公开,才能直接跳转
显式跳转
Intent intent=new Intent();
//参数是包名,类全限定名,注意直接用类名不行
ComponentName cn=new ComponentName("com.example.administrator.test",
"com.example.administrator.test.MainActivity");
intent.setComponent(cn);
startActivity(intent);
startActivity(new Intent(MainActivity.this,MainActivity1.class));
Intent intent=getPackageManager().getLaunchIntentForPackage("com.example.myapplicationtest");
try {
startActivity(intent);
}catch (Exception e){
e.printStackTrace();
}
隐式跳转
在标签内添加两个属性:<categroy>和<action>
categroy表示当前动作执行的模式,默认为DEFAULT,这里就用默认模式
action表示该Activity被启动时的要调用名字,可以为任意值,但最好为"项目包名.intent.action.Activity类名",这里我改为 android.intent.action.13
被跳转的TestActivity
<activity
android:name=".TestActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.13" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
调用的Activity
Intent intent = new Intent("android.intent.action.13");
try {
startActivity(intent);
} catch (Exception e) {
Toast.makeText(MainActivity.this, "应用不存在,请下载后再试", Toast.LENGTH_SHORT).show();
}
应用小知识
A应用的TestActivity 在SingleTask的启动模式下被其他应用启动,如果TestActivity不是主Activity,那个点击A应用时 直接进入启动的TestActivity;