91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • Android數據轉移中怎么用Launcher導出數據庫給另一臺機器加載

Android數據轉移中怎么用Launcher導出數據庫給另一臺機器加載

發布時間:2021-11-04 10:38:01 來源:億速云 閱讀:160 作者:iii 欄目:開發技術

本篇內容主要講解“Android數據轉移中怎么用Launcher導出數據庫給另一臺機器加載”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Android數據轉移中怎么用Launcher導出數據庫給另一臺機器加載”吧!

功能描述

1、導出當前launcher布局。
2、把布局文件拷貝到另一個機器。(模擬上傳下載服務器布局文件)
3、更新launcher布局。

需求分析

1、數據庫拷貝
2、導入數據庫
3、對桌面圖標進行分類:
app folder不需要修改,可以直接顯示;
widget、deepshortcut、1*1shortcut需要適配后才能顯示。

實現思路

1、導出launcher布局

只需要將launcher數據庫copy出去即可

2、導入數據庫

將數據庫文件copy到launcher data/data/包名/database/launcher.db
要注意的是,因為launcher在運行過程中,替換數據庫文件會導致舊的數據庫對象DatabaseHelper無法操作新數據庫,如果不做處理,再次操作數據庫會有crash;需要重新初始化數據庫對象或者重啟launcher,在數據庫初始化之前完成copy動作。

3、適配桌面支持的圖標類型

loadWorkspace中,從數據庫中加載信息:
3.1、app folder 不需要適配
3.2、widget:
widget適配,參考默認配置布局中從xml讀取數據庫,加載widget流程。
widget默認布局能配置上去,就能從數據庫中讀取包類名適配上去,只要保證他們走同一套流程即可。

case LauncherSettings.Favorites.ITEM_TYPE_CUSTOM_APPWIDGET:
//widget需要更新widgetID和widget status
if (copySuccess){
	c.restoreFlag = LauncherAppWidgetInfo.FLAG_ID_NOT_VALID |
	LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY |
	LauncherAppWidgetInfo.FLAG_DIRECT_CONFIG;
}

3.3、deep shortcut:

case LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT:
//deep shortcut會在系統中注冊信息
//我們需要根據數據庫里的內容,手動注冊到系統,讓用戶重啟機器之后也能正常顯示
//1、查詢已經注冊過的deepshortcut
List<ShortcutInfo> pinnedShortcuts = mShortcutManager.queryForPinnedShortcuts(null, user);
//根據數據庫key獲取pinnedShortcut,這里獲取不到,因為新手機沒有注冊過
} else if (c.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
	ShortcutKey key = ShortcutKey.fromIntent(intent, c.user);
	if (unlockedUsers.get(c.serialNumber)) {
	ShortcutInfo pinnedShortcut =shortcutKeyToPinnedShortcuts.get(key);
//
//快捷方式分二種,manifest里寫的 CREATE_SHORTCUT,長按圖標會彈出的那種
//LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC
//LauncherApps.ShortcutQuery.FLAG_MATCH_MANIFEST
//LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED
//固定界面的deepShortCut可以正常顯示,例如setting的BatterySaver,key為com.android.settings/manifest-shortcut-batterySaver#UserHandle{0}
//和
//widget列表里的1*1 未適配
if (pinnedShortcut == null && copySuccess){
    DeepShortcutManager sm = DeepShortcutManager.getInstance(context);
    List<ShortcutInfo> si = sm.queryForFullDetails(intent.getPackage(),null, c.user);
    shortcutKeyToPinnedShortcuts_copyDbFile.clear();
    Log.i(TAG,"key : "+key);
    for (ShortcutInfo shortcut : si) {
        ShortcutKey shortcutKey = ShortcutKey.fromInfo(shortcut);
        shortcutKeyToPinnedShortcuts_copyDbFile.put(shortcutKey,
                shortcut);
        Log.d(TAG,"shortcutKey : "+shortcutKey);
    }
    pinnedShortcut =
            shortcutKeyToPinnedShortcuts_copyDbFile.get(key);
    if (pinnedShortcut != null){
        copyDbFileNeedAddTo = true;
    }
}

//向底層綁定shortcut
com/tblenovo/launcher/model/BgDataModel.java
// Since this is a new item, pin the shortcut in the system server.
//ccsDeepShortCut need pinShortcut
if ((newItem || ccsDeepShortCUTItem) && count.value == 1) {
	DeepShortcutManager.getInstance(context).pinShortcut(pinnedShortcut);
}

3.4、11widget:
//widget列表里的1
1 未適配
長按添加setting中的1*1插件流程:
1、創建快捷方式屬性shortcutInfo
2、向底層申請創建快捷方式createShortcutResultIntent的Intent
3、固定快捷方式createWorkspaceItemFromPinItemRequest
1 2 步驟正常應該在setting中進行,3在launcher中。

全部放在launcher中執行,無法達到預期效果
啟動快捷方式時,需要根據包名和id進行啟動
如果是launcher的包名,只能打開設置主頁,無法跳到對應的快捷方式界面。

1*1widget向底層綁定只是用pinShortcut是不行的,無法成功綁定。

//向系統注冊shortcut
//注冊失敗,會檢測包名和data中的包名
WorkspaceItemInfo infoinfo = LauncherAppsCompatVO.createWorkspaceItemFromPinItemRequest(
context, LauncherAppsCompatVO.getPinItemRequest(data), 0);
//再走上面的pinShortcut完成

到此,相信大家對“Android數據轉移中怎么用Launcher導出數據庫給另一臺機器加載”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

思茅市| 吉隆县| 玉门市| 兴和县| 蒙阴县| 加查县| 炉霍县| 永和县| 延吉市| 石楼县| 星子县| 大城县| 迁安市| 临潭县| 钟祥市| 白水县| 西峡县| 太保市| 唐海县| 安庆市| 龙岩市| 宜州市| 潮州市| 昌宁县| 道孚县| 彰化县| 深水埗区| 庄河市| 淄博市| 上犹县| 新乡市| 南乐县| 长汀县| 长海县| 武山县| 韶关市| 二连浩特市| 北海市| 长丰县| 兴文县| 石家庄市|