android 桌面快捷方式、窗口小部件、文件夹、书签 launcher、appwidget、shortcut、folder、bookmark

时间:2023-01-24 14:01:01

1. 桌面上favorites介绍

android 桌面快捷方式、窗口小部件、文件夹、书签 launcher、appwidget、shortcut、folder、bookmark

上图的launcher桌面中间有四个元素,上面是一个时钟的窗口小部件,下面一排分别是一个Camera,一个Amazon书签,一个文件夹(文件夹中是SettingsClock)。

在代码中它们都是favorites分别称为:APPWIDGET、APPLICATION、SHORTCUT、FOLDER。

2. 数据库查看

favorites保存在数据库中。

导出数据库文件 data/data/com.android.launcher/databases/launcher.db

favorites表的结构

android 桌面快捷方式、窗口小部件、文件夹、书签 launcher、appwidget、shortcut、folder、bookmark

表中的数据,对应图1

android 桌面快捷方式、窗口小部件、文件夹、书签 launcher、appwidget、shortcut、folder、bookmark

intent的特写

android 桌面快捷方式、窗口小部件、文件夹、书签 launcher、appwidget、shortcut、folder、bookmark

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&amp;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,可惜还不支持shortcutfolder

下载

之前在Launcher上添加应用或者窗口小部件,需要找到包名和类名,以及位置等,然后手动在代码中添加。现在只需要在桌面上拖动添加,然后运行该程序,就会生成当前桌面应用和窗口小部件的布局文件,保存在/mnt/sdcard/default_workspace.xml中。将该文件直接替换packages\apps\Launcher2\res\xml-sw720dp\default_workspace.xml即可。

android 桌面快捷方式、窗口小部件、文件夹、书签 launcher、appwidget、shortcut、folder、bookmark

按后退键还有其他的

android 桌面快捷方式、窗口小部件、文件夹、书签 launcher、appwidget、shortcut、folder、bookmark