欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

Android跳转三方应用实例代码,

来源: 开发者 投稿于  被查看 6181 次 评论:223

Android跳转三方应用实例代码,


目录
  • 前言
  • 如何跳转三方应用?
    • 跳转三方应用
    • 跳转三方应用 + 指定页面(Activity)
  • 如何获取手机上已有的app包名与启动页(Activity)?
    • 获取手机中安装的app包名、启动Activity
    • 获取手机app列表
    • 兴趣分析
  • 总结

    前言

    老了,老了,那天有位小同事问我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跳转三方应用内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

    您可能感兴趣的文章:
    • Android实现外部唤起应用跳转指定页面的方法
    • android 跳转到应用通知设置界面的示例
    • Android应用自动跳转到应用市场详情页面的方法

    用户评论