在一个应用中打开另一个应用

在某些场景下,我们可能需要在一个app中打开另外一个app,或者打开例外一个app中的子activity。那么如何实现呢,其实也是比较简单。
 我们只要知道需要带开的app的包名和类名就可以了。
有两个app,包名分别是com.example.testappone和com.example.testapptwo
    private void openMainActivity(){
        ComponentName comName = new ComponentName("com.example.testapptwo", "com.example.testapptwo.MainActivity");
        Intent intent = new Intent();
        intent.setComponent(comName);
        startActivity(intent);
    }
其中com.example.testapptwo是我需要打开的app的包名,com.example.testapptwo.MainActivity是其主Activity的类名。

但是当我们打开的不是应用的主Activity时,还需要注意在Manifest.xml中注册activity时,需要设置android:exported="true",表示该activity能够被其他的application调用。

    private void openSubActivity(){
        ComponentName comName = new ComponentName("com.example.testapptwo", "com.example.testapptwo.SubActivityOne");
        Intent intent = new Intent();
        intent.setComponent(comName);
        startActivity(intent);
    }


        <activity
            android:name="com.example.testapptwo.SubActivityOne"
            android:exported="true">
        </activity>

其中com.example.testapptwo"是我要打开的app的包名,com.example.testapptwo.SubActivityOne是其子acvtivity名,所以需要在第二个app注册SubActivityOne时,添加android:exported="true"这个属性。

那么为什么我们在打开另一个app的MainActivity时,不需要指定android:exported="true",其实是因为在Manifest.xml中注册MainActivity时,我们添加了IntentFilter,并且需要设置其action属性,所以exported就默认设置为true,所有不需要我们手动去设置。如下:

       <activity
            android:name="com.example.testapptwo.SubActivityOne"
            >
            <intent-filter >
                <action android:name="android.testapptwo"/>
            </intent-filter>
        </activity>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值