`
心雨心
  • 浏览: 355021 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设置默认应用

 
阅读更多

 setDefaultLauncher();

 

 

 

 private void setDefaultLauncher() {
        // get default component
        boolean mFirstLaunch = false;
        String packageName = "com.cyanogenmod.trebuchet";// 默认launcher包名
        String className = "com.cyanogenmod.trebuchet.Launcher";// //默认launcher入口
        Log.d("MyTag", "defautl packageName = " + packageName
                + ", default className = " + className);
        if ((packageName != null && packageName.trim().length() > 1)
                && (className != null && className.trim().length() > 0)) {
            boolean firstLaunch = SystemProperties.getBoolean(
                    "persist.sys.sw.firstLaunch", true); // 只做一次
                                                         // 可以注意这几个变量firstLaunch
                                                         // mFirstLaunch
            Log.d("MyTag", "firstLaunch = " + firstLaunch);
            if (firstLaunch) {
                mFirstLaunch = true;
                // do this only for the first boot
                SystemProperties.set("persist.sys.sw.firstLaunch", "false");
            }
            Log.d("MyTag", "firstLaunch = " + firstLaunch);
            if (true) {
                IPackageManager pm = ActivityThread.getPackageManager();

                // 清除当前默认launcher
                ArrayList<IntentFilter> intentList = new ArrayList<IntentFilter>();
                ArrayList<ComponentName> cnList = new ArrayList<ComponentName>();
                getPackageManager().getPreferredActivities(intentList, cnList,
                        null);
                IntentFilter dhIF;
                for (int i = 0; i < cnList.size(); i++) {
                    dhIF = intentList.get(i);
                    if (dhIF.hasAction(Intent.ACTION_MAIN)
                            && dhIF.hasCategory(Intent.CATEGORY_HOME)) {
                        getPackageManager().clearPackagePreferredActivities(
                                cnList.get(i).getPackageName());
                    }
                }

                // 获取所有launcher activity
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.addCategory(Intent.CATEGORY_HOME);
                List<ResolveInfo> list = new ArrayList<ResolveInfo>();
                try {
                    list = pm.queryIntentActivities(intent,
                            intent.resolveTypeIfNeeded(getContentResolver()),
                            PackageManager.MATCH_DEFAULT_ONLY,
                            UserHandle.getCallingUserId());
                } catch (RemoteException e) {
                    throw new RuntimeException("Package manager has died", e);
                }
                // get all components and the best match
                IntentFilter filter = new IntentFilter();
                filter.addAction(Intent.ACTION_MAIN);
                filter.addCategory(Intent.CATEGORY_HOME);
                filter.addCategory(Intent.CATEGORY_DEFAULT);
                final int N = list.size();
                Log.d("MyTag", "N:::::hyhyhyhy:::: = " + N);
                ComponentName[] set = new ComponentName[N];
                int bestMatch = 0;
                for (int i = 0; i < N; i++) {
                    ResolveInfo r = list.get(i);
                    set[i] = new ComponentName(r.activityInfo.packageName,
                            r.activityInfo.name);
                    Log.d("MyTag",
                            "r.activityInfo.packageName:::::hyhyhyhy:::: = "
                                    + r.activityInfo.packageName);
                    Log.d("MyTag", "r.activityInfo.name:::::hyhyhyhy:::: = "
                            + r.activityInfo.name);
                    if (r.match > bestMatch)
                        bestMatch = r.match;
                }
                // 设置默认launcher
                ComponentName launcher = new ComponentName(packageName,
                        className);
                try {
                    pm.addPreferredActivity(filter, bestMatch, set, launcher,
                            UserHandle.getCallingUserId());
                } catch (RemoteException e) {
                    throw new RuntimeException("Package manager has died", e);
                }
            }
        }
    }

 

需要 android:sharedUserId="android.uid.system"和系统签名

 <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />

编译时出错误,把android源码下的系统jar包导入即可

分享到:
评论

相关推荐

    怎么设置默认浏览器,默认浏览器设置方法.docx

    - 有些第三方工具允许用户快速、批量设置默认应用程序,包括浏览器。这种方法适用于需要频繁更换默认浏览器的用户。 5. **系统自动识别** - 在Windows 10及更高版本中,系统可能会自动识别并建议用户设置最近...

    vb设置默认打印机 vb设置默认打印机

    在VB(Visual Basic)编程环境中,设置默认打印机是一项常见的任务,尤其在开发涉及打印功能的应用程序时。VB提供了丰富的API函数和对象模型来与系统硬件交互,包括打印机。以下将详细讲解如何通过VB来实现这一功能...

    Android Spinner设置默认标题

    通过这个过程,我们可以看到,虽然设置默认标题看似简单,但它涉及到Android UI组件的理解、数据适配以及事件监听等多方面的知识。熟悉这些技巧将有助于提升你的Android应用开发能力。如果你有更多关于Spinner或者...

    win7系统设置默认网站的应用程序

    1. **设置默认网站的物理路径**: 在IIS管理器中,展开“网站”节点,找到“默认网站”,然后双击“基本设置”。在这个界面,你可以看到“物理路径”字段,这是你的应用程序应当存放的位置。通常,你可能希望将这个...

    vc设置系统默认打印机

    4. **`SetDefaultPrinter`**:在Windows 2000及以上版本中直接设置默认打印机。 5. **`SendMessageTimeout`**:发送一条带有超时机制的消息到指定窗口,本例中用于通知系统更改了打印机设置。 #### 结论 通过这段...

    Win10如何将传统照片查看器设置为默认应用?.docx

    Windows 10 设置传统照片查看器为默认应用 在 Windows 10 中,传统照片查看器不再是默认的照片查看应用。想要将其设置为默认应用,需要进行一些设置。下面是详细的步骤: 问题Background 在全新安装 Windows 10 ...

    Win8.1技巧高效地管理应用程序.docx

    本文主要介绍如何设置应用程序的兼容性和权限,以及如何在不同账户间切换和保存个性化设置,还有如何设置默认应用程序和关联文件类型。 首先,处理应用程序的兼容性问题至关重要。有时,某些程序在Win8.1上可能无法...

    JBoss 将WEB应用发布为默认应用程序

    总之,将WEB应用设置为JBoss的默认应用是一项涉及服务器配置和XML解析的任务,通过适当修改`jboss-web.xml`文件并正确部署,可以实现直接通过IP访问应用的目标。在实践中,务必遵循JBoss的官方文档和提供的指南,以...

    vc windows 设置默认mic/speaker

    在Windows操作系统中,尤其是Windows 10,管理和设置默认的麦克风(mic)与扬声器(speaker)是一项重要的任务,对于日常的音频输入输出功能至关重要。这些设置可以帮助用户优化其音频体验,确保在通话、录音、播放...

    TP框架设置默认访问控制器和超级管理员

    通过设置默认控制器,可以方便地控制用户的初始访问行为,例如让用户首先看到登录页面、主页或其他欢迎页面等。这不仅提高了用户体验,还增加了应用程序的安全性。 #### 如何配置默认控制器 在给定的代码片段中,...

    Android设置默认桌面(针对华为适配)

    "Android设置默认桌面(针对华为适配)"这个主题主要关注如何在华为设备上设定自定义的桌面启动器为默认启动器,因为华为设备在某些版本的系统中可能会有其特定的适配需求。这里我们将深入探讨这个过程,以及可能...

    vb 设置默认打印机 两台打印机来回切换程序源代码

    标题“vb 设置默认打印机 两台打印机来回切换程序源代码”指的是一个VB应用程序,它的主要功能是实现用户在连接到同一台计算机上的两台打印机之间切换默认打印机。这在多打印机共享或需要频繁更改打印输出设备的环境...

    android Launcher3设置默认桌面应用

    "android Launcher3设置默认桌面应用" Android Launcher3是Android系统中的一种launcher应用程序,负责管理和显示桌面应用程序。设置默认桌面应用是Launcher3的一个重要功能,它允许用户自定义桌面应用程序的布局和...

    Win10如何设置默认浏览器.docx

    Windows 10 设置默认浏览器详解 在 Windows 10 系统中,设置默认浏览器是一个非常重要的操作,因为它会影响我们日常的浏览体验。在本文中,我们将详细介绍如何在 Windows 10 中设置默认浏览器。 设置默认浏览器的...

    android代码删除默认设置

    在Android系统中,用户经常会遇到各种应用在...通过查询和操作这些设置,我们可以在代码层面帮助用户更改或清除默认应用。但同时,开发者应该谨慎对待这一功能,遵循最佳实践,确保用户界面的清晰和用户隐私的安全。

    易语言设置默认程序

    在“易语言设置默认程序”这个主题中,我们主要探讨的是如何使用易语言来实现操作系统中的一个常见功能——设置默认程序,即用户可以指定某个应用程序打开特定类型的文件或执行特定的任务。 首先,我们要理解什么是...

    C#控制打印机直接打印,设置默认打印机

    在C#编程环境中,控制打印机直接打印以及设置默认打印机是一项常见的任务,特别是在开发桌面应用程序时。C#提供了丰富的API和类库,使得开发者能够轻松地与操作系统交互,完成这些功能。下面将详细介绍如何使用C#来...

    怎么设置默认浏览器呢? 设置默认浏览器方法.docx

    ### 如何设置默认浏览器 随着互联网技术的发展和个人电脑的普及,浏览器成为了人们日常生活中不可或缺的工具之一。在Windows操作系统中,默认浏览器的选择对于提高用户的工作效率和优化上网体验至关重要。本文将...

    win10图片浏览的模式怎么改回到改win7样式的?.docx

    在“默认应用”页面中向下滚动,直到找到“按文件类型设置默认应用”的部分。在这个区域,找到“图片”类别,点击它展开下拉菜单。接着,找到“照片”项,点击后会出现一个下拉列表。 4. **选择Windows照片查看器*...

Global site tag (gtag.js) - Google Analytics