启动另一个App的Activity

假设当前的Activity为ActivityA,要跳转到另一个App的Activity,这个Activity为TargetActivity
一.通过包名+类名启动
ActivityA

Intent intent = new Intent();
intent.setClassName("com.wislie.charging","com.wislie.charging.TargetActivity");
startActivity(intent);

TargetActivity

<activity android:name=".TargetActivity" android:exported="true" />

android:exported="true" 表示Activity能否被另外一个Application的组件启动, true允许启动, false不允许
二.通过action启动
ActivityA

startActivity(new Intent("com.wislie.intent.target"));

TargetActivity

<activity android:name=".TargetActivity" >
    <intent-filter >
        <action android:name="com.wislie.intent.target"/>
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

三.通过data启动
ActivityA

Uri uri = Uri.parse("app://com.wislie.app");
Intent intent = new Intent();
intent.setData(uri);
startActivity(intent);

TargetActivity

<activity android:name=".TargetActivity">
    <intent-filter>
        <action android:name="com.wislie.intent.target" />
        <category android:name="android.intent.category.DEFAULT" />
        <data
            android:host="com.wislie.app"
            android:scheme="app" />
    </intent-filter>
</activity>

四.启动有权限的Activity
倘若设置android:exported="true", 要启动的Activity就会暴露出来;为了尽量不暴露Activity,可以为Activity添加权限控制
ActivityA

Intent intent = new Intent();
intent.setClassName("com.wislie.charging", "com.wislie.charging.TargetActivity");
startActivity(intent);
<uses-permission android:name="com.wislie.charging.permission.TargetActivity" />

TargetActivity

<permission android:name="com.wislie.charging.permission.TargetActivity" />
<activity
    android:name=".TargetActivity"
    android:permission="com.wislie.charging.permission.TargetActivity">
    <intent-filter>
        <action android:name="com.wislie.intent.target" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

注意事项: 在ActivityA启动TargetActivity时, 如果找不到TargetActivity,就会抛异常,因此需要将启动代码放在try-catch中

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容