`
Leif_冬
  • 浏览: 47923 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

修改android Launcher

阅读更多

由于项目需求更改,在此做保留以后方便使用

 

 在 frameworks/base/core/java/com/android/internal/app/ResolverActivity.java 中作修改

 

根据需要默认Launcher来设置默认

 

 

private void setDefaultLauncher(String defPackageName,String defClassName) {

    if ((defPackageName != null && defPackageName.trim().length() > 1) && (defClassName != null && defClassName.trim().length() > 0)) {

        IntentFilter filter = new IntentFilter();

        filter.addAction("android.intent.action.MAIN");

        filter.addCategory("android.intent.category.HOME");

        filter.addCategory("android.intent.category.DEFAULT");

 

        Intent intent=new Intent(Intent.ACTION_MAIN);

        intent.addCategory(Intent.CATEGORY_HOME);

        List<ResolveInfo> list = new ArrayList<ResolveInfo>();

        list = getPackageManager().queryIntentActivities(intent, 0);

        final int N = list.size();

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

            if (r.match > bestMatch) bestMatch = r.match;

        }

        ComponentName preActivity = new ComponentName(defPackageName, defClassName);

        getPackageManager().addPreferredActivity(filter, bestMatch, set,preActivity);

    }

}

在onCreate方法中添加调用

 

protected void onCreate(Bundle savedInstanceState) {

    //++++++++++++

    boolean firstBoot = (Settings.System.getInt(getApplication().getContentResolver(),

                Settings.System.DEFAULT_HOME_SETTING_CHANGED, 0) == 0);

    if(firstBoot){

        String defPackageName = "com.panasonic.india.flexuihome";

        String defClassName = "com.panasonic.india.flexuihome.Launcher";

        setDefaultLauncher(defPackageName,defClassName);

 

        android.util.Log.i("deflauncher : ","deflauncher : PackageName = "+

            defPackageName+" ClassName = "+defClassName);

        Intent defIntent = new Intent();

        defIntent.setClassName(defPackageName, defClassName);

        defIntent.setAction("android.intent.action.MAIN");

        defIntent.addCategory("android.intent.category.HOME");

        defIntent.addCategory("android.intent.category.DEFAULT");

        startActivity(defIntent);

        Settings.System.putInt(getApplication().getContentResolver(),

                Settings.System.DEFAULT_HOME_SETTING_CHANGED,1);

        this.finish();

    }

    //++++++++++++

    // Use a specialized prompt when we're handling the 'Home' app startActivity()

    final int titleResource;

    final Intent intent = makeMyIntent();

    final Set<String> categories = intent.getCategories();

    if (Intent.ACTION_MAIN.equals(intent.getAction())

            && categories != null

            && categories.size() == 1

            && categories.contains(Intent.CATEGORY_HOME)) {

        titleResource = com.android.internal.R.string.whichHomeApplication;

    } else {

        titleResource = com.android.internal.R.string.whichApplication;

    }

 

    onCreate(savedInstanceState, intent, getResources().getText(titleResource),

            null, null, true);

}

 

 

DEFAULT_HOME_SETTING_CHANGED的设置

/android/framworks/base/

在core/java/android/provider/Settings.java的public static final class System extends NameValueTable{}中添加

 

public static final String DEFAULT_HOME_SETTING_CHANGED = "default_home_setting_changed";

 

packages/SettingsProvider/res/values/defaults.xml中添加

 

<integer name="default_launcher_value">0</integer>

 

packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

 

在private void loadSystemSettings(SQLiteDatabase db){}中添加中添加

 

loadIntegerSetting(stmt, Settings.System.DEFAULT_HOME_SETTING_CHANGED, R.integer.default_launcher_value);

分享到:
评论

相关推荐

    Android Launcher 源码修改可编译.zip源码资源下载

    本文将深入探讨Android Launcher的源码结构、关键组件以及如何进行修改和编译。 首先,理解Android Launcher的源码结构是至关重要的。源码通常包括多个模块,如UI布局文件、Java代码、资源文件(如图片、字符串资源...

    android launcher3源码 循环翻页

    《深入解析Android Launcher3源码:循环翻页机制》 Android Launcher3是Android系统的核心组件之一,它是用户与系统交互的门户,承担着应用程序启动、桌面布局管理等关键任务。本篇文章将深入探讨Launcher3的源码,...

    安卓Android源码——Android Launcher 源码修改可编译.zip

    "安卓Android源码——Android Launcher 源码修改可编译.zip" 这个标题表明我们关注的是Android操作系统的源代码,特别是与启动器(Launcher)相关的部分。Launcher是用户与Android系统交互的主要界面,它管理应用...

    Android Launcher3源码

    **Android Launcher3源码详解** Android系统的桌面启动器(Launcher)是用户与设备交互的核心界面,它负责展示应用快捷方式、小部件以及主屏幕布局。其中,`Launcher3`是Android开源项目AOSP(Android Open Source ...

    Android Launcher 源码

    通过研究和修改Android Launcher的源码,开发者可以学习到如何定制自己的启动器,实现独特的功能,比如自定义主题、动态壁纸、个性化布局等。同时,这也是深入理解Android系统架构、事件处理机制、数据存储和UI设计...

    安卓Android源码——安卓Android Launcher 桌面分页滑动代码.rar

    下面,我们将深入探讨Android Launcher桌面分页滑动的相关知识点。 1. **Android UI框架**:在Android中,用户界面主要由View和 ViewGroup 组成。View是基本的UI元素,如按钮、文本框等,而ViewGroup则是布局容器,...

    Android Launcher3源码已修改 可直接使用

    《深入解析Android Launcher3源码修改与应用》 在Android操作系统中,Launcher3是一个至关重要的组件,它是我们日常接触最多的部分——手机桌面。这个组件负责显示应用图标、小部件、快捷方式,以及处理主屏幕的...

    Android高级应用源码-Android Launcher 源码修改可编译.zip

    本资料包提供的是一个经过修改,可编译的Android Launcher源码,旨在帮助开发者深入理解Android启动器的工作原理,并进行定制化开发。以下是对这个高级应用源码的详细分析。 一、Android Launcher概述 Android ...

    android launcher2源码

    Launcher2需要特定的系统权限才能访问和修改桌面布局,如`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`。源码中涉及权限的检查和处理,有助于理解Android的权限管理系统。 通过对Android Launcher2源码的...

    安卓Launcher桌面相关-AndroidLauncher源码修改可编译.rar

    Android Launcher源码的修改与编译是一个深入理解Android系统运行机制的重要途径,对于开发者来说,这能帮助他们定制自己的桌面应用或者优化系统性能。 1. **Launcher结构分析** Android Launcher由多个组件构成,...

    Android Launcher 桌面分页滑动代码.zip

    创建自定义的Android Launcher意味着你需要覆盖默认的启动器行为,例如更改桌面布局、添加特殊功能或调整滑动效果。`TestPagedView`可能包含了实现这些自定义功能的关键代码。 8. **权限与安全**: 当开发自定义...

    android手把手教你开发launcher(AndroidStudio版)

    知识点一:Android桌面启动器(Launcher)开发基础 在Android系统中,桌面启动器(Launcher)是用户与Android设备交互的起点,负责展示应用图标、列表和各种小部件。Android允许开发者创建自己的Launcher应用,可以...

    Android11 Launcher3

    **Android 11 Launcher3 深度解析** Android 11中的Launcher3是系统启动器的主要组件,它是用户与设备交互的门户,负责显示应用图标、桌面壁纸、小部件等。Launcher3不仅承担着应用启动的任务,还管理着用户的主...

    android Launcher2文件夾功能分析

    文件夹访问遵循Android的权限模型,只有拥有相应权限的应用才能读取或修改`Launcher2`的数据。这包括读写SD卡的权限,因为某些数据可能存储在外部存储上。 7. **与其他系统的交互** `Launcher2`与Android系统其他...

    安卓开发-Android Launcher 源码修改可编译.zip

    这个"安卓开发-Android Launcher 源码修改可编译.zip"文件包含了一个可编译的Android Launcher源码项目,这对于开发者深入理解Android系统的工作原理,以及定制个性化启动器具有很高的价值。 首先,我们来详细了解...

    Launcher3_androidlauncher_android开发_

    2. **Launcher3简介**:Launcher3是AOSP中的默认启动器,它的代码公开,开发者可以研究和修改以满足个性化需求。它的设计注重性能和用户体验,是理解Android启动器开发的重要参考。 二、Launcher3 架构分析 1. **...

    Android Launcher2

    **Android Launcher2详解** 在Android系统中,Launcher是用户与设备交互的第一道窗口,它扮演着桌面的角色,负责展示应用图标、小部件以及管理主屏幕。`Launcher2`是Android早期版本中的默认启动器,虽然在后来的...

    android launcher

    《Android Launcher:打造个性化的移动桌面》 Android Launcher,作为Android操作系统的核心组成部分,是用户与设备交互的第一界面,它的设计和功能直接影响着用户的使用体验。本文将深入探讨Android Launcher的源...

    Android 12.0 Launcher 客制化指导手册.pdf

    **Android 12.0 Launcher 客制化详解** 在Android 12.0中,Launcher3作为系统启动器经历了显著的变化,为开发者提供了更多客制化选项,以满足不同用户的需求和喜好。以下是关于Launcher3升级变化以及客制化的详细...

Global site tag (gtag.js) - Google Analytics