快速生成Launcher3待機快捷方式的方法、 桌面定製

最近項目上要頻繁修改待機快捷方式、佈局,找包名、類名、座標各種煩吶 


先找到一種稍微簡單些的捷徑:  

1、手動在laucher桌面上按照客戶要求把各個快捷方式佈局好

2、導出

 /data/data/com.android.launcher3/databases/launcher.db文件  (非root的手機貌似看不到,要想想辦法)
3、把導出的文件放入packages/apps/Launcher3/assets/default_launcher.db 
4、修改launcher3代碼,編譯、打包
然後安裝帶db的launcher看看後果,怎麼樣? 需要的待機快捷方式都在了吧(如果沒看到效果,把launcher3數據先清除一下,再試試)


閒話少說,上代碼:

commit xxxxxxxxxxxxxxxxxxx
Author: XXXXXXXXXXXXXXXXXXXXX
Date:   xxxxxxxxxxxxxxxxxxx


    Launcher3 默認UI界面修改(默認待機快捷方式)
    
    Change-Id: xxxxxxxxxxxxxxxxxxxx


diff --git a/device/XXXXXX/XXXXXX/system.prop b/device/XXXXXX/XXXXXX/system.prop
index 2d2bf26..8815a35 100755
--- a/device/XXXXXX/XXXXXX/system.prop
+++ b/device/XXXXXX/XXXXXX/system.prop
@@ -66,3 +66,6 @@ ro.kernel.zio=38,108,105,16
 debug.hwui.render_dirty_regions=false
 
 ro.sf.lcd_density=240
+
+ro.sys.launcher3db.control=true
+
diff --git a/packages/apps/Launcher3/assets/default_launcher.db b/packages/apps/Launcher3/assets/default_launcher.db
new file mode 100644
index 0000000..7004f01
Binary files /dev/null and b/packages/apps/Launcher3/assets/default_launcher.db differ
diff --git a/packages/apps/Launcher3/src/com/android/launcher3/LauncherProvider.java b/packages/apps/Launcher3/src/com/android/launcher3/LauncherProvider.java
index e4237fd..80f598e 100644
--- a/packages/apps/Launcher3/src/com/android/launcher3/LauncherProvider.java
+++ b/packages/apps/Launcher3/src/com/android/launcher3/LauncherProvider.java
@@ -63,7 +63,10 @@ import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -355,12 +358,74 @@ public class LauncherProvider extends ContentProvider {
                 editor.putInt(DEFAULT_WORKSPACE_RESOURCE_ID, origWorkspaceResId);
             }
 
+            //jimbo add start
+            String DEF_DB_NAME = "default_launcher.db";
+            String LAUNCHER_CONTROL_PROPERTY = "ro.sys.launcher3db.control";
+<span style="white-space:pre">			</span>
+            boolean bLoadFromDB = SystemProperties.getBoolean(LAUNCHER_CONTROL_PROPERTY, false);
+            Log.d("jimbo","loadDefaultFavoritesIfNecessary  bLoadFromDB="+bLoadFromDB);
+           
+            if(bLoadFromDB){
+                try {
+                    //assets裏的文件
+                    InputStream is = getContext().getAssets().open(DEF_DB_NAME);
+                    
+                    File dbFile = getContext().getDatabasePath(DATABASE_NAME);
+                    
+                    inputStream2File(is, dbFile);
+               }catch (FileNotFoundException e) {
+                    // file not found use default xml
+                    mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), workspaceResId);
+                } catch (IOException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+            }else   
+            //jimbo add end
+            //ori code
+            {
             mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), workspaceResId);
+            }
+            
             mOpenHelper.setFlagJustLoadedOldDb();
             editor.commit();
         }
     }
 
+    //jimbo add start
+    private void inputStream2File(InputStream inputStream, File file) {
+        OutputStream outputStream = null;
+        try {
+            outputStream = new FileOutputStream(file);
+
+            int read = 0;
+            byte[] bytes = new byte[1024];
+            while ((read = inputStream.read(bytes)) != -1) {
+                outputStream.write(bytes, 0, read);
+            }
+
+            Log.d(TAG,"inputStream2File copy file   Done!");
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (inputStream != null) {
+                try {
+                    inputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (outputStream != null) {
+                try {
+                    // outputStream.flush();
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+
+            }
+        }
+    }
+    //jimbo add end
+
     public void migrateLauncher2Shortcuts() {
         mOpenHelper.migrateLauncher2Shortcuts(mOpenHelper.getWritableDatabase(),
                 LauncherSettings.Favorites.OLD_CONTENT_URI);



發佈了37 篇原創文章 · 獲贊 22 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章