Android中一个app启动另一个app

4,230 阅读1分钟

通过一个应用开启另一个应用的场景,mark一下。

一、应用A中点击按钮,跳转到应用B

在应用A中,点击按钮时

// 通过包名获取要跳转的app,创建intent对象                        
Intent intent = getPackageManager().getLaunchIntentForPackage("com.example.db_demo");// 这里如果intent为空,就说名没有安装要跳转的应用嘛                        
if (intent != null) {                            
    // 这里跟Activity传递参数一样的嘛,不要担心怎么传递参数,还有接收参数也是跟Activity和Activity传参数一样//                            
    intent.putExtra("name", "Liu xiang");//                            
    intent.putExtra("birthday", "1983-7-13");                            
    startActivity(intent);                        
} else {                            
    // 没有安装要跳转的app应用,提醒一下                            
    ToastUtils.success("哟,赶紧下载安装这个APP吧");                        
}

备注:这里是默认启动应用B的启动页面

二、应用A中点击按钮,跳转到应用B中的指定Activity

注意:通过scheme来启动Activity

1.应用A中,点击按钮

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("scheme_db://123123123")));

2.应用B中,AndroidManifest.xml的配置如下

假设要启动的是

<activity android:name=".ui.WCDBActivity"    
    android:launchMode="singleInstance"> //多窗口,可添加android:launchMode="singleInstance"
    <intent-filter>        
        <category android:name="android.intent.category.DEFAULT" />        
        <action android:name="android.intent.action.VIEW"/>
        <data android:scheme="scheme_db"/>  //通过scheme名称,可启动WCDBActivity
    </intent-filter>
</activity>

3.在应用B中,WCDBActivity中可获取应用A中传递过来的数据

getIntent().getScheme();//获得Scheme名称
String data = getIntent().getDataString();//获得Uri全部路径
Toast.makeText(this, data+"",Toast.LENGTH_LONG).show();

三、应用A点击按钮,跳转到应用B的指定Activity

另外一种跳转指定Activity模式如下:

1.应用A中,点击

/**指定包名和带包名的Activity的名字*/
ComponentName componentName = 
    new ComponentName("com.example.db_demo", "com.example.db_demo.ui.SQLiteActivity");
Intent intent = new Intent();
intent.putExtra("id", 1001);
intent.setComponent(componentName);startActivity(intent);

2.应用B中,AndroidManifest.xml需要修改

<activity 
    android:name=".ui.LiteOrmActivity"    
    android:exported="true" //必须配置,否则不能被其他应用开启
    //如果想要在相邻窗口打开,则修改启动模式singleTask或者singleInstance
    android:launchMode="singleTask"/>