Android如何实现跳转三方应用

发布时间:2021-12-27 14:43:30 作者:小新
来源:亿速云 阅读:1402

小编给大家分享一下Android如何实现跳转三方应用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

如何跳转三方应用?

这里指的三方应用可以理解为自身外的其余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);
        }
    }

查询效果

Android如何实现跳转三方应用

获取手机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

Android如何实现跳转三方应用

看看ResolveInfo

Android如何实现跳转三方应用

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

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

Android如何实现跳转三方应用

以上是“Android如何实现跳转三方应用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. Android中如何设计与实现scheme跳转
  2. Android实现外部唤起应用跳转指定页面的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android

上一篇:怎么使用log4j2自定义配置文件位置和文件名

下一篇:如何进行Skywalking探针模型设计分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》