Android跳转三方应用实例代码

 更新时间:2021年12月27日 11:17:18   作者:Modu_Liu  
大家好,本篇文章主要讲的是Android跳转三方应用实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

前言

老了,老了,那天有位小同事问我Android跳转三方应用时有什么要注意的?是否可以直接跳?如何传递参数过去? 嗯… 我竟然说需要root或者三方授权,尴尬了…

Android四大组件都支持IPC通信,而Activity IPC通信主要体现在通过Intent启动各种系统功能,应用等;其实在此之前已经有很多优秀的blog进行了总结,不过各有不同,我仅以我的方式记录一下 …

如何跳转三方应用?跳转三方应用跳转三方应用 + 指定页面(Activity) 如何获取手机上已有的app包名与启动页(Activity)?获取手机中安装的app包名、启动Activity获取手机app列表兴趣分析 如何在项目中进行实战演练?

如何跳转三方应用?

这里指的三方应用可以理解为自身外的其余app,例如QQ、微信、支付宝、淘宝等app ~

主要通过 Activity Intent + PackageManager启动三方App,主要在于getLaunchIntentForPackage方法,如果理解通过Launch启动App的话,秒懂 ~

跳转三方应用

核心代码

    PackageManager packageManager = this.getPackageManager();
    Intent intent = packageManager.getLaunchIntentForPackage("项目包名");
    startActivity(intent);

封装方法

    /**
     * @param context     上下文
     * @param packageName 包名
     */
    public void skipOtherApp(Context context, String packageName) {
        PackageManager packageManager = context.getPackageManager();
        Intent intent = packageManager.getLaunchIntentForPackage(packageName);
        startActivity(intent);
    }

跳转三方应用 + 指定页面(Activity)

跳转三方应用的具体界面与上方方式稍有不同,主要通过ComponentName类来帮助打开另一个应用的Activity或者Service等,具体通过Intent.setComponent方法实现。

核心代码

    Intent intent = new Intent();
    //这里跳转的是淘宝的启动页
    ComponentName comp = new ComponentName("com.taobao.taobao", "com.taobao.tao.welcome.Welcome");
    intent.setComponent(comp);
    //为三方的activity新开任务栈
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);

方法封装

    /**
     * @param packageName   包名
     * @param activityClass 跳转界面的activity
     */
    public void skipOtherAppActivity(String packageName, String activityClass) {
        Intent intent = new Intent();
        //ComponentName类主要是用来帮助打开另一个应用的Activity或者Service等,通过Intent.setComponent方法实现
        ComponentName comp = new ComponentName(packageName, activityClass);
        intent.setComponent(comp);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }

如何获取手机上已有的app包名与启动页(Activity)?

获取手机中安装的app包名、启动Activity

    /**
     * 通过PackageManager获取手机内所有app的包名和启动页(首个启动Activity的类名)
     * 可根据自己业务需求封装方法的返回体,可以是单app信息,也可以是appList
     */
    public void getAllApp(Context context) {
        Intent intent = new Intent(Intent.ACTION_MAIN, null);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        PackageManager packageManager = context.getPackageManager();
        List<ResolveInfo> appsInfo = packageManager.queryIntentActivities(intent, 0);
        Collections.sort(appsInfo, new ResolveInfo.DisplayNameComparator(packageManager));
        for (ResolveInfo info : appsInfo) {
            String pkg = info.activityInfo.packageName;
            String cls = info.activityInfo.name;
            Log.e("app_info", "pkg:" + pkg + " —— cls:" + cls);
        }
    }

查询效果

在这里插入图片描述

获取手机app列表

方法封装(或许有点画蛇添足了,就当做下次copy元素吧)

    /**
     * 获取手机app列表
     */
    public List<ResolveInfo> getAllAppList(Context context) {
        Intent intent = new Intent(Intent.ACTION_MAIN, null);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        PackageManager packageManager = context.getPackageManager();
        List<ResolveInfo> appsInfo = packageManager.queryIntentActivities(intent, 0);
        Collections.sort(appsInfo, new ResolveInfo.DisplayNameComparator(packageManager));
        return appsInfo;
    }

兴趣分析

看图说话可以分析出,主要是通过PackageManagerCategory为条件,过滤出android.intent.category.LAUNCHER的 app

在这里插入图片描述

看看ResolveInfo

在这里插入图片描述

看看ActivityInfo(我没去找线上源码,本地也没下载… 所以看不全)

关于每个app的基本信息,一般都在ActivityInfo中,有兴趣的可以去源码文档看一下 ~

在这里插入图片描述

总结

到此这篇关于Android跳转三方应用实例代码的文章就介绍到这了,更多相关Android跳转三方应用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android中View自定义组合控件的基本编写方法

    Android中View自定义组合控件的基本编写方法

    这篇文章主要介绍了Android中View自定义组合控件的基本编写方法,可以在布局的时候更加随意地继承,需要的朋友可以参考下
    2016-04-04
  • Android 数据结构全面总结分析

    Android 数据结构全面总结分析

    这篇文章主要为大家介绍了Android 数据结构全面总结分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • mac开发android环境搭建步骤图解

    mac开发android环境搭建步骤图解

    这里比较详细的来总结下mac开发android的环境搭建步骤安装过程,希望对一些正准备配置Android开发环境的小伙伴们有一定帮助
    2014-01-01
  • 解析Android数据加密之异或加密算法

    解析Android数据加密之异或加密算法

    本篇文章主要介绍了Android数据加密之异或加密算法,现在分享给大家,也给大家做个参考。有兴趣的可以了解一下。
    2016-11-11
  • Android ViewPager的MVP架构搭建过程

    Android ViewPager的MVP架构搭建过程

    本文主要介绍了ViewPager在Android中的作用以及使用场景,如引导页、图片浏览器、新闻或文章内容的多标签页等,同时,还详细阐述了如何通过MVP架构来搭建ViewPager,将视图和逻辑进行解耦,提高代码的可测试性、可复用性,使代码结构更清晰且易于扩展功能
    2024-10-10
  • Android中常用的XML生成方法实例分析

    Android中常用的XML生成方法实例分析

    这篇文章主要介绍了Android中常用的XML生成方法,以实例形式较为详细的分析了Android生成XML的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Android引导页面的简单实现

    Android引导页面的简单实现

    这篇文章主要为大家详细介绍了Android引导页面的简单实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 解决RecycleView分割线不居中的三种方法

    解决RecycleView分割线不居中的三种方法

    这篇文章主要为大家分享了解决RecycleView分割线不居中的三种方法,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android 利用方向传感器实现指南针具体步骤

    Android 利用方向传感器实现指南针具体步骤

    Android利用方向传感器实现指南针功能,听起来还不错吧,下面与大家分享下具体的实现步骤,感兴趣的朋友可以参考下哈
    2013-06-06
  • Android开发中超好用的正则表达式工具类RegexUtil完整实例

    Android开发中超好用的正则表达式工具类RegexUtil完整实例

    这篇文章主要介绍了Android开发中超好用的正则表达式工具类RegexUtil,结合完整实例形式分析了Android正则表达式常见操作技巧,包括针对证件号、银行账号、手机号、邮编等的正则判断相关操作技巧,需要的朋友可以参考下
    2017-11-11

最新评论