Android从当前APP跳转到其他应用

1、从当前APP跳转到其它App的某个Activity 

在App中跳转到其它APP中指定的Activity,需要满足以下条件:

1)目标APP的指定Activity允许其他应用访问 

2)知晓目标APP包名以及目标Activity的完整路径

3)目标APP的目标Activity中定义了可以进行隐式启动的action 和 category ;

1)为必须满足的条件,在1)的基础上,2)与 3)满足其中一个,即可实现跳转;

2、具体代码如何实现

第一步:为目标APP的目标Activity添加权限属性(让其它应用拥有启动它的权限)

进入目标APP--->AndroidManifest--->找到目标Activity标签--->添加属性--->加入以下代码:

(此处假如目标Activity为 SplashActivity)

<activity android:name=".SplashActivity" android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.demo"/> 
        <category android:name="android.intent.category.DEFAULT"/>  (不加此行会崩溃报错)
    </intent-filter>
</activity>

注意:上述代码中的 category必须为DEFAULT,若改为其它的,会导致崩溃的情况;

第二步:愉快的进行跳转吧

 在当前APP需要跳转的地方加入以下代码:

/**
 * App内跳转其它应用某activity的第一种方式
 */
Intent intent = new Intent();
intent.setAction("android.intent.action.demo");
startActivity(intent);

或者

/**
 * App内跳转其它应用某activity的第二种方式
 */
ComponentName componetName = new ComponentName(
        "com.example.life",  //这个是另外一个应用程序的包名
        "com.example.life.SplashActivity");   //这个参数是要启动的Activity的全路径名
try {
    Intent intent = new Intent();
    intent.setComponent(componetName);
    startActivity(intent);
} catch (Exception e) {
    Toast.makeText(this, "跳转异常,请检查跳转配置、包名及Activity访问权限", Toast.LENGTH_SHORT).show();
}

3、方式选择建议

上述列出两种代码方式,有什么区别呢,还是有一点区别的,建议如下:

1、无论方式一 还是 方式二,都必须给目标activity注册标签中加入 android:exported="true"属性;

2、在不清楚目标包名 以及 目标Activity的完整路径时,建议使用  代码第一种方式,即 使用 action 启动,但是不要忘记在目标App的Activity注册时,添加对应的action和category (忘记加崩溃了就很尴尬);

3、如果知晓目标APP的包名以及目标Activity路径(这个一般都很好获取,使用aapt工具就可以获取apk的部分信息),这种情况就建议使用 第二种方式,这种方式就无需在目标Activity注册的标签中加入action 和 category标签了;

【本文仅为个人学习记录,如有错误,烦请指正,共同学习】

发布了26 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/xyl826/article/details/88555585