假设由应用A跳转到应用B。
前提是应用B存在,可以使用getPackageManager().getPackageInfo("应用B的包名", 0);方法判断应用B是否存在。
方式一、通过 ComponentName 类实现
应用A中的代码如下:
Intent intent1 = new Intent();
ComponentName name = new ComponentName("应用B的包名","应用B中跳转到的activity的全路径");
intent1.setComponent(name);
intent1.putExtra("data","传递的数据");
startActivity(intent1);
应用B中的配置和代码:
AndroidManifest中对应的Activity下添加 android:exported="true" 表示允许其它应用调用当前组件;
B代码中
Intent intent=this.getIntent();
if(null!=intent.getStringExtra("data")){
//处理数据
}
方式二、Intent隐式调起的方式
应用A:
Intent intent2=new Intent();
intent2.setAction("定义的action,要与后面B中使用的保持一致");
intent2.putExtra("data","传递的数据");
startActivity(intent2);
应用B:
AndroidManifest中
<activity android:name="要跳转的指定类">
<intent-filter>
<action android:name="定义的action,要与前面A中的保持一致"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
B代码中
Intent intent=this.getIntent();
if(null!=intent.getStringExtra("data")){
//处理数据
}
方式三、系统包管理器的方式
应用A中:
Intent intent3=getPackageManager().getLaunchIntentForPackage("应用B的包名");
intent3.putExtra("data","传递的数据");
startActivity(intent3);
应用B的启动Activity:
Intent intent=this.getIntent();
if(null!=intent.getStringExtra("data")){
//处理数据
}
方式三最简单,但是它只能进入启动Activity。