模块内正常跳转
显式跳转
Intent intent = new Intent();
intent.setClass(this, xxxrActivity.class);
intent.putExtra("key","value");
startActivity(intent);
模块间跳转
隐式跳转
1:根据具体activity路径跳转
Intent intent = new Intent();
intent.setClassName(getPackageName(), "com.xxx_xxxActivity");
intent.putExtra("key", "value");
if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)!= null){
startActivity(intent);
}else {
Toast.makeText(this,"找不到你想要的activity",Toast.LENGTH_SHORT).show();
}
2:根据activity配置的action跳转
//配置action
<activity android:name="com.xxx.xxxActivity" >
<intent-filter>
<action android:name="xxx" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Intent intent = new Intent();
intent.setPackage(getPackageName());//配置包名,防止提醒进那个同样action的activity
intent.setAction("x'x'x");//配置的action
intent.putExtra("key", "value");
if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)!= null){
startActivity(intent);
}else {
Toast.makeText(this,"找不到你想要的activity",Toast.LENGTH_SHORT).show();
}
隐式跳转安全性
注意:如果移除Activity所在module,而不移除跳转,Activity会出现崩溃现象。
所以,调用resolveActivity()做判空。
if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)!= null){
startActivity(intent);
}else {
Toast.makeText(this,"找不到你想要的activity",Toast.LENGTH_SHORT).show();
}