由于项目需求更改,在此做保留以后方便使用
在 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的源码结构、关键组件以及如何进行修改和编译。 首先,理解Android Launcher的源码结构是至关重要的。源码通常包括多个模块,如UI布局文件、Java代码、资源文件(如图片、字符串资源...
《深入解析Android Launcher3源码:循环翻页机制》 Android Launcher3是Android系统的核心组件之一,它是用户与系统交互的门户,承担着应用程序启动、桌面布局管理等关键任务。本篇文章将深入探讨Launcher3的源码,...
"安卓Android源码——Android Launcher 源码修改可编译.zip" 这个标题表明我们关注的是Android操作系统的源代码,特别是与启动器(Launcher)相关的部分。Launcher是用户与Android系统交互的主要界面,它管理应用...
**Android Launcher3源码详解** Android系统的桌面启动器(Launcher)是用户与设备交互的核心界面,它负责展示应用快捷方式、小部件以及主屏幕布局。其中,`Launcher3`是Android开源项目AOSP(Android Open Source ...
通过研究和修改Android Launcher的源码,开发者可以学习到如何定制自己的启动器,实现独特的功能,比如自定义主题、动态壁纸、个性化布局等。同时,这也是深入理解Android系统架构、事件处理机制、数据存储和UI设计...
下面,我们将深入探讨Android Launcher桌面分页滑动的相关知识点。 1. **Android UI框架**:在Android中,用户界面主要由View和 ViewGroup 组成。View是基本的UI元素,如按钮、文本框等,而ViewGroup则是布局容器,...
《深入解析Android Launcher3源码修改与应用》 在Android操作系统中,Launcher3是一个至关重要的组件,它是我们日常接触最多的部分——手机桌面。这个组件负责显示应用图标、小部件、快捷方式,以及处理主屏幕的...
本资料包提供的是一个经过修改,可编译的Android Launcher源码,旨在帮助开发者深入理解Android启动器的工作原理,并进行定制化开发。以下是对这个高级应用源码的详细分析。 一、Android Launcher概述 Android ...
Launcher2需要特定的系统权限才能访问和修改桌面布局,如`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`。源码中涉及权限的检查和处理,有助于理解Android的权限管理系统。 通过对Android Launcher2源码的...
Android Launcher源码的修改与编译是一个深入理解Android系统运行机制的重要途径,对于开发者来说,这能帮助他们定制自己的桌面应用或者优化系统性能。 1. **Launcher结构分析** Android Launcher由多个组件构成,...
创建自定义的Android Launcher意味着你需要覆盖默认的启动器行为,例如更改桌面布局、添加特殊功能或调整滑动效果。`TestPagedView`可能包含了实现这些自定义功能的关键代码。 8. **权限与安全**: 当开发自定义...
知识点一:Android桌面启动器(Launcher)开发基础 在Android系统中,桌面启动器(Launcher)是用户与Android设备交互的起点,负责展示应用图标、列表和各种小部件。Android允许开发者创建自己的Launcher应用,可以...
**Android 11 Launcher3 深度解析** Android 11中的Launcher3是系统启动器的主要组件,它是用户与设备交互的门户,负责显示应用图标、桌面壁纸、小部件等。Launcher3不仅承担着应用启动的任务,还管理着用户的主...
文件夹访问遵循Android的权限模型,只有拥有相应权限的应用才能读取或修改`Launcher2`的数据。这包括读写SD卡的权限,因为某些数据可能存储在外部存储上。 7. **与其他系统的交互** `Launcher2`与Android系统其他...
这个"安卓开发-Android Launcher 源码修改可编译.zip"文件包含了一个可编译的Android Launcher源码项目,这对于开发者深入理解Android系统的工作原理,以及定制个性化启动器具有很高的价值。 首先,我们来详细了解...
2. **Launcher3简介**:Launcher3是AOSP中的默认启动器,它的代码公开,开发者可以研究和修改以满足个性化需求。它的设计注重性能和用户体验,是理解Android启动器开发的重要参考。 二、Launcher3 架构分析 1. **...
**Android Launcher2详解** 在Android系统中,Launcher是用户与设备交互的第一道窗口,它扮演着桌面的角色,负责展示应用图标、小部件以及管理主屏幕。`Launcher2`是Android早期版本中的默认启动器,虽然在后来的...
《Android Launcher:打造个性化的移动桌面》 Android Launcher,作为Android操作系统的核心组成部分,是用户与设备交互的第一界面,它的设计和功能直接影响着用户的使用体验。本文将深入探讨Android Launcher的源...
**Android 12.0 Launcher 客制化详解** 在Android 12.0中,Launcher3作为系统启动器经历了显著的变化,为开发者提供了更多客制化选项,以满足不同用户的需求和喜好。以下是关于Launcher3升级变化以及客制化的详细...