本方法测试于android4.4源码,但不仅限于android4.4,请自行测试。
在默认启用的launcher下搜索default_workspace.xml文件中加入默认要放置的普通的应用程序。加入的格式为:
<favorite
launcher:packageName="... " //应用的packageName
launcher:className="... " //应用启动时的第一个activity
launcher:screen="..." //放置在第几屏(放在workspace的时候需要,从0开始,0为第一屏,1为第二屏,以此类推...)
launcher:x="..." //放置x方向的位置(在列中的位置)
launcher:y="..." /> //放置y方向的位置(在行中的位置)
其中应用的pachageName和activity是我们需要的,很多种方法都可以获取这个信息,我们可以通过logcat截取log的方式获取。打开eclipse中的logcat并添加一个Filter,在"by log message"中填写"cmp"。连接设备,在logcat清空LOG之后,打开该应用,获取第一条过滤出的log。
例如:
设置
06-28 03:44:13.015: I/ActivityManager(505): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.settings/.Settings bnds=[371,521][499,611]} from pid 775
launcher:packageName="com.android.settings"
launcher:className="com.android.settings.Settings"
图库
launcher:packageName="com.android.gallery3d"
launcher:className="com.android.gallery3d.app.GalleryActivity"
相机
06-28 03:44:57.495: I/ActivityManager(505): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.gallery3d/com.android.camera.CameraLauncher bnds=[524,521][652,611]} from pid 775launcher:packageName="com.android.gallery3d"
launcher:className="com.android.camera.CameraLauncher"
对于布局:
(0,0) |
(1,0) |
(2,0) |
(3,0) |
(4,0) |
(0,1) |
(1,1) |
(2,1) |
(3,1) |
(4,1) |
(0,2) |
(1,2) |
(2,2) |
(3,2) |
(4,2) |
如果添加widget
<widget
launcher:packageName="..." //widget的packageName
launcher:className=" ..." //实现 widget的 receiver 类的名称.
launcher:container="..." //放置的位置(只能为desktop)
launcher:screen="..." //放置在第几屏上
launcher:x="..." //放置的x位置
launcher:y="..." //放置的y位置
launcher:spanx="..." //在x方向上所占格数
launcher:spany="..."/> //在y方向上所占格数
例如,要在第3屏的第一行第二列放置开始放置一个x方向上占两个单位格,y方向上占两个单位格的时钟,可以加入以下代码:
<appwidget
launcher:packageName="com.android.alarmclock"
launcher:className="com.android.alarmclock.AnalogAppWidgetProvider"
launcher:container="desktop"
launcher:screen="2"
launcher:x="1"
launcher:y="0"
launcher:spanx="2"
launcher:spany="2"/>
改变主界面的排列方式
要修改桌面的排列方式,如下,先根据横竖屏设置修改workspace_screen.xml里shortAxisCells和longAxisCells的参数,然后在Launcher.java中修改NUMBER_CELLS_X和NUMBER_CELLS_Y的值,在2.3版本中刚开始往数据库中添加item的时候会去判断,如果不修改NUMBER_CELLS_X和NUMBER_CELLS_Y的话会导致一部分的item显示不出来,导致预制apk的失败。