我现在要实现这样一个功能,就是我自己定制了一个桌面应用,最后要和原生的Launcher共存,通常情况下,如果系统存在多个桌面应用,点击home后会弹出对话框让用户选择启动哪个桌面,现在要求不弹出这个对话框,直接默认启动自定义的桌面,怎么实现这个功能?
    通过设置默认选项这个方法大家就别说了,我想要的是怎么修改源码,包括framework,不让用户选择而直接启动自定义桌面。
    

解决方案 »

  1.   

    壁纸分为动态和静态两种:
    如果只需要修改默认静态壁纸,替换frameworks/base/core/res/res/drawable/default_wallpaper.jpg即可,或者在源码中修改对应default_wallpaper地址.
    修改动态壁纸:在frameworks/base/core/res/res/values目录找到Config.xml文件,最后一行有定义:
    <string name="default_wallpaper_component">null</string> 
    将其修改为对应的live wallpaper的启动component即可。
    静态的图片壁纸和live wallpaper是两个系统,加载的时候是完全两套机制,静态图片通过launcher里面的一个xml文件配置来管理系统默认静态壁纸,live wallpaper则是通过intent机制向系统搜寻所有匹配Activity,所以,这里的默认值为null,而不是那个系统默认静态壁纸的地址,系统是读config.xml文件的设置,若为null才继续查找静态壁纸配置内容.
      

  2.   

    这部分还真看过,不过当时就是想获得弹出选择框后点击默认launcher后的操作,其他的没看,,,自己研究研究吧。
    不过可以提供你看源码的方法:
    从资源开始找代码:
    例如:点击home如果launcher多的话就会弹出一个框,框上有图片和文字,然后去源码的对应资源文件夹下找资源,然后ctrl + h再找在哪里用的。
    一步步的就欧了。
      

  3.   

    你能改framework,那你就直接看设置默认是改了系统哪个配置,然后将那个配置直接写在系统里面就好了。