android 预置圆桌面上的应用程序图标、快捷方式图标或者窗口小部件

android 预置桌面上的应用程序图标、快捷方式图标或者窗口小部件
请修改res/xml/default_workspace.xml文件,添加如下代码:
<favorite
        launcher:packageName="" //完整的包名
        launcher:className=""      //完整包名.类名(处理main intent的类)
        launcher:screen=""            //应用图标所在的屏幕(从0开始)
        launcher:x=""                    //应用图标所在的列
        launcher:y="" />                //应用图标所在的行
<shortcut
        launcher:uri="http://www.baidu.com"
        launcher:icon="@drawable/ic_launcher_baidu"
        launcher:title="@string/baidu_title"
        launcher:screen=""
        launcher:x=""
        launcher:y="" />
<shortcut              
   launcher:uri="#Intent;action=android.intent.action.MAIN;launchFlags=0x10200000;component=com.cleanmaster.mguard/com.cleanmaster.processcleaner.ProcessCleanerActivity;end"
        launcher:icon="@drawable/ic_launcher_application"
        launcher:title="@string/jinshan_title" 
        launcher:screen=""
        launcher:x=""
        launcher:y=""/>
 <appwidget
        launcher:packageName="com.android.settings"
        launcher:className="com.android.settings.widget.SettingsAppWidgetProvider"
        launcher:screen="3"
        launcher:x="0"
        launcher:y="0"
        launcher:spanX="4"  //在屏幕上x方向所占的格子数
        launcher:spanY="1" //在屏幕上y方向所占格子数 />
 


1、不能预置有configuration的AppWidget。
2、Google从KK开始对系统权限增加限制,对于system权限的获取有严格的规范。Launcher3默认拿不到系统BIND_APPWIDGET权限,因此无法预置AppWidget。
如果要预置AppWidget,需要Launcher3获取到系统权限,因此要修改Launcher3的Android.mk,增加LOCAL_PRIVILEGED_MODULE := true,这样build出来的Launcher3.apk会生成到/system/priv-app目录下,可以预置appwidget。
具体代码撰写如下:
 
3、如果是运营商项目,会有resource_overlay机制,以OP01/SPEC0200/SEGC为例,桌面预置内容是以如下路径的default_workspace.xml为准:
ICS/ICS2: alps/mediatek/source/operator/OP01/SPEC0200/SEGC/OverLayResource/packages/apps/Launcher2/res/xml/default_workspace.xml
JB/JB2: alps/mediatek/operator/OP01/SPEC0200/SEGC/OverLayResource/packages/apps/Launcher2/res/xml/default_workspace.xml
其他运营商项目与此类似。