最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android數(shù)據(jù)轉(zhuǎn)移之Launcher導(dǎo)出數(shù)據(jù)庫(kù)給另一臺(tái)機(jī)器加載

 更新時(shí)間:2021年11月04日 09:17:16   作者:縱容_伊人倩影  
這篇文章主要介紹了Android系統(tǒng)中Launcher導(dǎo)出數(shù)據(jù)庫(kù)給另一臺(tái)機(jī)器加載的詳細(xì)流程,數(shù)據(jù)轉(zhuǎn)移是少見但早晚要用到的功能,感興趣的朋友快來提前掌握吧

功能描述

1、導(dǎo)出當(dāng)前l(fā)auncher布局。
2、把布局文件拷貝到另一個(gè)機(jī)器。(模擬上傳下載服務(wù)器布局文件)
3、更新launcher布局。

需求分析

1、數(shù)據(jù)庫(kù)拷貝
2、導(dǎo)入數(shù)據(jù)庫(kù)
3、對(duì)桌面圖標(biāo)進(jìn)行分類:
app folder不需要修改,可以直接顯示;
widget、deepshortcut、1*1shortcut需要適配后才能顯示。

實(shí)現(xiàn)思路

1、導(dǎo)出launcher布局

只需要將launcher數(shù)據(jù)庫(kù)copy出去即可

2、導(dǎo)入數(shù)據(jù)庫(kù)

將數(shù)據(jù)庫(kù)文件copy到launcher data/data/包名/database/launcher.db
要注意的是,因?yàn)閘auncher在運(yùn)行過程中,替換數(shù)據(jù)庫(kù)文件會(huì)導(dǎo)致舊的數(shù)據(jù)庫(kù)對(duì)象DatabaseHelper無法操作新數(shù)據(jù)庫(kù),如果不做處理,再次操作數(shù)據(jù)庫(kù)會(huì)有crash;需要重新初始化數(shù)據(jù)庫(kù)對(duì)象或者重啟launcher,在數(shù)據(jù)庫(kù)初始化之前完成copy動(dòng)作。

3、適配桌面支持的圖標(biāo)類型

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

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會(huì)在系統(tǒng)中注冊(cè)信息
//我們需要根據(jù)數(shù)據(jù)庫(kù)里的內(nèi)容,手動(dòng)注冊(cè)到系統(tǒng),讓用戶重啟機(jī)器之后也能正常顯示
//1、查詢已經(jīng)注冊(cè)過的deepshortcut
List<ShortcutInfo> pinnedShortcuts = mShortcutManager.queryForPinnedShortcuts(null, user);
//根據(jù)數(shù)據(jù)庫(kù)key獲取pinnedShortcut,這里獲取不到,因?yàn)樾率謾C(jī)沒有注冊(cè)過
} 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,長(zhǎng)按圖標(biāo)會(huì)彈出的那種
//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 未適配
長(zhǎng)按添加setting中的1*1插件流程:
1、創(chuàng)建快捷方式屬性shortcutInfo
2、向底層申請(qǐng)創(chuàng)建快捷方式createShortcutResultIntent的Intent
3、固定快捷方式createWorkspaceItemFromPinItemRequest
1 2 步驟正常應(yīng)該在setting中進(jìn)行,3在launcher中。

全部放在launcher中執(zhí)行,無法達(dá)到預(yù)期效果
啟動(dòng)快捷方式時(shí),需要根據(jù)包名和id進(jìn)行啟動(dòng)
如果是launcher的包名,只能打開設(shè)置主頁,無法跳到對(duì)應(yīng)的快捷方式界面。

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

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

到此這篇關(guān)于Android數(shù)據(jù)轉(zhuǎn)移之Launcher導(dǎo)出數(shù)據(jù)庫(kù)給另一臺(tái)機(jī)器加載的文章就介紹到這了,更多相關(guān)Android 數(shù)據(jù)轉(zhuǎn)移內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android判斷和監(jiān)聽底座狀態(tài)和類型的方法介紹

    Android判斷和監(jiān)聽底座狀態(tài)和類型的方法介紹

    這篇文章主要介紹了Android判斷和監(jiān)聽底座狀態(tài)和類型的方法介紹,例如判斷當(dāng)前底座狀態(tài)、判斷插入底座類型、監(jiān)控充電充電狀態(tài)等,需要的朋友可以參考下
    2014-06-06
  • Android 自定義View實(shí)現(xiàn)多節(jié)點(diǎn)進(jìn)度條功能

    Android 自定義View實(shí)現(xiàn)多節(jié)點(diǎn)進(jìn)度條功能

    這篇文章主要介紹了Android 自定義View實(shí)現(xiàn)多節(jié)點(diǎn)進(jìn)度條,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Android制作登錄頁面并且記住賬號(hào)密碼功能的實(shí)現(xiàn)代碼

    Android制作登錄頁面并且記住賬號(hào)密碼功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android制作登錄頁面并且記住賬號(hào)密碼功能的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Android開發(fā)之天氣趨勢(shì)折線圖

    Android開發(fā)之天氣趨勢(shì)折線圖

    在開發(fā)天氣APP的時(shí)候會(huì)要顯示多天的信息,所以加一個(gè)折線圖來顯示一下天氣變化趨勢(shì)是很不錯(cuò)的效果,本文詳細(xì)介紹了開發(fā)過程,下面一起來看看。
    2016-08-08
  • android串口開發(fā)入門之搭建ndk開發(fā)環(huán)境及第一個(gè)jni調(diào)用程序

    android串口開發(fā)入門之搭建ndk開發(fā)環(huán)境及第一個(gè)jni調(diào)用程序

    這篇文章主要給大家介紹了關(guān)于android串口開發(fā)入門之搭建ndk開發(fā)環(huán)境及第一個(gè)jni調(diào)用程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • Android監(jiān)聽系統(tǒng)來電并彈出提示窗口

    Android監(jiān)聽系統(tǒng)來電并彈出提示窗口

    本篇文章主要介紹了Android監(jiān)聽系統(tǒng)來電并彈出提示窗口,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • 一篇文章弄懂Android自定義viewgroup的相關(guān)難點(diǎn)

    一篇文章弄懂Android自定義viewgroup的相關(guān)難點(diǎn)

    這篇文章主要給大家介紹了關(guān)于如何通過一篇文章弄懂Android中自定義viewgroup的一些相關(guān)難點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • Android 環(huán)境變量的配置方法

    Android 環(huán)境變量的配置方法

    本文主要介紹Android 環(huán)境變量的配置方法,這里詳細(xì)講解了如何實(shí)現(xiàn)環(huán)境變量的配置方法,有興趣的小伙伴可以參考下
    2016-09-09
  • Android OKHttp使用簡(jiǎn)介

    Android OKHttp使用簡(jiǎn)介

    目前Android端調(diào)用網(wǎng)絡(luò)請(qǐng)求最常用的框架就是OKHttp,目前項(xiàng)目中也經(jīng)常會(huì)用到。介紹下OKHttp的使用場(chǎng)景
    2021-05-05
  • Android自定義view Path 的高級(jí)用法之搜索按鈕動(dòng)畫

    Android自定義view Path 的高級(jí)用法之搜索按鈕動(dòng)畫

    這篇文章主要介紹了Android自定義view Path 的高級(jí)用法之搜索按鈕動(dòng)畫,需要的朋友可以參考下
    2017-06-06

最新評(píng)論

平遥县| 平安县| 南城县| 广宁县| 白河县| 宁明县| 濮阳市| 依兰县| 普格县| 苍南县| 白玉县| 隆化县| 上杭县| 白朗县| 汉沽区| 阜阳市| 云安县| 伊金霍洛旗| 福建省| 梨树县| 丰城市| 来宾市| 新野县| 大城县| 平塘县| 屏东市| 长治市| 福安市| 泗阳县| 招远市| 靖安县| 龙南县| 彭泽县| 依兰县| 成安县| 石家庄市| 辽源市| 五大连池市| 绥宁县| 广宁县| 定陶县|