单应用多入口 打开的正确姿势

作者: 超威蓝猫l | 来源:发表于2018-03-10 20:03 被阅读0次

做过launcher的朋友都知道,有一些应用是有多个入口的。我们需要把所有入口都显示在桌面上。

如何获取桌面应用程序


/**
     * 获取能在桌面上使用得app
     *
     * @return
     */
    public static List<ResolveInfo> getIntentActivity() {
        Intent intent = new Intent();
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.setAction(Intent.ACTION_MAIN);

        PackageManager manager = MyApplication.getContext().getApplicationContext().getPackageManager();
        List<ResolveInfo> resolveInfos = manager.queryIntentActivities(intent, 0);
        return resolveInfos;
    }

如何获取桌面图标 包名 应用名字以及入口Activity(入口activity是关键)

Drawable drawable = info.loadIcon(packageManager);//图标
                    String name = info.loadLabel(packageManager).toString();//应用名
                    String packageName = info.activityInfo.packageName;//包名
                    String targetActivity = info.activityInfo.name;//入口activity 绝对路径(不是targetActivity)

如何打开第三方应用

平常我们只通过包名打开的话 永远只能打开第一个入口activity

//这里我们不用这个
public static void startAppByPackageName(String packageName) {
        PackageManager packageManager = MyApplication.getContext().getApplicationContext().getPackageManager();
        if (checkPackInfo(packageName)) {
            Intent intent = packageManager.getLaunchIntentForPackage(packageName);
            MyApplication.getContext().getApplicationContext().startActivity(intent);
        } else {
            MyApplication.showToast(MyApplication.getContext().getApplicationContext().getString(R.string.str_not_install));
        }
    }

想打开不同的入口用这个

public static void startTargetActivity(String packageName, String targetActivity) {
        Intent intent = new Intent();
        ComponentName cn = new ComponentName(packageName, targetActivity);
        try {
            intent.setComponent(cn);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//别忘了这个
//18.03.23更新
intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); //launcher系统launcher会添加这个
            MyApplication.getContext().getApplicationContext().startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
            MyApplication.showToast(MyApplication.getContext().getApplicationContext().getString(R.string.str_not_install));
        }
    }

相关文章

  • 单应用多入口 打开的正确姿势

    做过launcher的朋友都知道,有一些应用是有多个入口的。我们需要把所有入口都显示在桌面上。 如何获取桌面应用程...

  • webpack基础用法

    基本概念之entry(依赖图的入口) 单入口(单页应用):字符串 多入口(多页应用):对象 基本概念之Output...

  • 用 Swift 架构 iOS 应用的正确姿势

    用 Swift 架构 iOS 应用的正确姿势 用 Swift 架构 iOS 应用的正确姿势

  • CRA多入口集成

    前言 新生的CRA配置是单页面网页应用 出于某些目的,需要打包成多入口。比如storybook框架,多入口使用if...

  • CocoaPods 正确打开姿势

    1、首先查看当前pod 的版本: pod --version截止当前2019年2月26号最新版本号:1.6.1 2...

  • webpack 出入口配置

    1、常规单入口文件配置 2、多文件入口配置

  • 读书的正确打开姿势

    在时下读书被热捧的时代,我们的到底该怎么抉择呢? 很多人拿着书却怎么也读不进去,那到底如何是好呢? 对于年轻人来说...

  • 打开护肤的正确姿势

    这里给大家介绍的是九个护肤误区,以及正确做法,希望能够帮助到大家! 感兴趣就请往下看吧

  • nvm的正确打开姿势

    昨天在运行npm install的时候突然报错,就是下面的这些话,说是是npm不支持当前版本的node.js,版本...

  • 正确打开ThreadLocal的姿势

    作者:Nikita Salnikov-Tarnovski 不知道各位同学之前有没有使用过ThreadLocal。使...

网友评论

    本文标题:单应用多入口 打开的正确姿势

    本文链接:https://www.haomeiwen.com/subject/igpbfftx.html