启动另一个App的Activity

2020-03-23  本文已影响0人  wislie_zhu

假设当前的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中

上一篇 下一篇

猜你喜欢

热点阅读