- 通过包名称启动同一个应用不同包名称下的 Activity
//第一个参数为工程包名 可以直接使用 this,第二个为启动的Actvity 完整路径。填写错误会提示 Activity 找不到。
Intent intent =new Intent(MainActivity.this,com.zengjx.permisssionB.AActivity.class);
// intent.setClassName("com.zengjx.androidbaseproject","com.zengjx.androidbaseproject.NotificationDetailActivity");
// intent.setClassName("com.zengjx.permisssionB","com.zengjx.permisssionB.BActivity");
startActivity(intent);
- 一个应用通过包名启动另外一个APP 的 某一个Activity
1. 两个不同的应用 , 应用PermissionA 启动 应用 Perminsion B 的 BActivity:
PermissionA:
public void start1(){
Intent intent =new Intent();
intent.setClassName("com.zengjx.androidbaseproject","com.zengjx.androidbaseproject.BActivity");
startActivity(intent);
}
启动另外一个应用包名下的某个Activity;例如 第二个应用的包名
com.zengjx.androidbaseproject 下 com.camera 包名下的
应用包名AndroidMenifest.xml
第二个应用 AndroidMenifest.xml Activity 添加 exported 说明。
//启动另外一个应用 某个包名下的界面 setClassName 第一个参数是 应用的包名AndroidMenifest.xml查看,第二个参数是Activity 的完整路径。 public void startCamera(){ Intent intent =new Intent(); intent.setClassName("com.zengjx.androidbaseproject","com.camera.CameraActivity"); startActivity(intent); }
2. 应用Perminsion B 的AndroidMenifest.xml 添加 BActivity: android:exported="true"
<activity android:name="com.zengjx.permisssionB.BActivity"
android:exported="true"
>
</activity>
- 一个应用通过 包名启动另外一个app:
PackageManager packageManager = getPackageManager();
Intent intent=new Intent();
intent =packageManager.getLaunchIntentForPackage("com.zengjx.androidbaseproject");//需要启动的应用包名
if(intent==null){
Toast.makeText(MainActivity.this, "未安装", Toast.LENGTH_LONG).show();
}else{
startActivity(intent);
}