文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android如何实现跳转三方应用

2023-06-22 05:35

关注

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

如何跳转三方应用?

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

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

跳转三方应用

核心代码

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

封装方法

    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);

方法封装

    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

    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元素吧)

    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如何实现跳转三方应用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯