1. 桌面上favorites介紹
上圖的launcher桌面中間有四個元素,上面是一個時鐘的窗口小部件,下面一排分別是一個Camera,一個Amazon書籤,一個文件夾(文件夾中是Settings和Clock)。
在代碼中它們都是favorites分別稱爲:APPWIDGET、APPLICATION、SHORTCUT、FOLDER。
2. 數據庫查看
favorites保存在數據庫中。
導出數據庫文件 data/data/com.android.launcher/databases/launcher.db
favorites表的結構
表中的數據,對應圖1
intent的特寫
3. 數據庫中favorites表簡介
· _id
· title 顯示的名字
· intent
· container 容器:
CONTAINER_DESKTOP=-100,默認值;
CONTAINER_HOTSEAT=-101,常駐在屏幕下方,手機上的最下面一行,平板上沒有,所以圖3中的Brower在圖1中沒有;
圖3中的Clock,Settings的container是6,表示他們屬於Folder。
· screen 所屬的屏幕。
· cellX x軸上的位置。
· cellY y軸上的位置。
· spanX 寬度,默認爲1。
· spanY 高度,默認爲1。
· itemType 類型:
ITEM_TYPE_APPLICATION = 0;
ITEM_TYPE_SHORTCUT = 1;
ITEM_TYPE_FOLDER = 2;
ITEM_TYPE_LIVE_FOLDER = 3;
ITEM_TYPE_APPWIDGET = 4;
· appWidgetId
· isShortcut
· iconType
· iconPackage
· iconResource
· icon
· uri
· displayMode
詳細的可以查看Launcher2\src\com\android\launcher2\LauncherSettings.java
4. 給桌面添加默認的favorites
launcher上的默認的favorite是在Launcher2\res\xml\default_workspace.xml中定義的。(Launcher2\res\xml-sw600dp\default_workspace.xml、Launcher2\res\xml-sw720dp\default_workspace.xml)
<?xml version="1.0" encoding="utf-8"?>
<favorites xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher" >
<appwidget
launcher:className="com.android.alarmclock.AnalogAppWidgetProvider"
launcher:packageName="com.android.deskclock"
launcher:screen="4"
launcher:spanX="2"
launcher:spanY="2"
launcher:x="2"
launcher:y="0" />
<favorite
launcher:className="com.android.camera.CameraLauncher"
launcher:packageName="com.android.gallery3d"
launcher:screen="4"
launcher:x="1"
launcher:y="3" />
<shortcut
launcher:icon="@drawable/ic_home_voice_search_holo"
launcher:screen="4"
launcher:title="@string/application_name"
launcher:uri="https://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000626391"
launcher:x="2"
launcher:y="3" />
<folder
launcher:icon="@drawable/ic_launcher_home"
launcher:screen="4"
launcher:title="@string/folder_name_format"
launcher:x="3"
launcher:y="3" >
<favorite
launcher:className="com.android.settings.Settings"
launcher:packageName="com.android.settings" />
<favorite
launcher:className="com.android.deskclock.DeskClock"
launcher:packageName="com.android.deskclock" />
</folder>
<!-- Hotseat (We use the screen as the position of the item in the hotseat) -->
<favorite
launcher:className="com.android.browser.BrowserActivity"
launcher:container="-101"
launcher:packageName="com.android.browser"
launcher:screen="4"
launcher:x="4"
launcher:y="0" />
</favorites>
5. 工具附件及介紹
自己寫的一個程序,幫助生成default_workspace.xml,可惜還不支持shortcut和folder
之前在Launcher上添加應用或者窗口小部件,需要找到包名和類名,以及位置等,然後手動在代碼中添加。現在只需要在桌面上拖動添加,然後運行該程序,就會生成當前桌面應用和窗口小部件的佈局文件,保存在/mnt/sdcard/default_workspace.xml中。將該文件直接替換packages\apps\Launcher2\res\xml-sw720dp\default_workspace.xml即可。
按後退鍵還有其他的