精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙OS 剪貼板開發指導

王程 ? 2024-01-31 15:46 ? 次閱讀

場景介紹

同一設備的應用程序 A、B 之間可以借助系統剪貼板服務完成簡單數據的傳遞,即應用程序 A 向剪貼板服務寫入數據后,應用程序 B 可以從中讀取出數據。在滿足分布式剪貼板服務的使用條件時,應用程序 A、B 也可以來自組網內的不同設備。

wKgaomW3dAWAD53fAAB8q3nBoAc664.png

圖1 剪貼板服務示意圖

在使用剪貼板服務時,需要注意以下幾點:

  • 只有在前臺獲取到焦點的應用才有讀取系統剪貼板的權限(系統默認輸入法應用除外)。
  • 寫入到剪貼板服務中的剪貼板數據不會隨應用程序結束而銷毀。
  • 對同一用戶而言,寫入剪貼板服務的數據會被下一次寫入的剪貼板數據所覆蓋。
  • 如果設備滿足分布式組網條件,且進行復制操作的設備打開了剪貼板分布式開關,未配置“僅在本地”標志位的剪貼板數據里的 MIME 類型為純文本和 HTML 的內容可以被組網內其他打開了剪貼板分布式開關的設備粘貼出來。
  • 在同一設備內,剪貼板單次傳遞內容不應超過 800KB。在分布式場景下多設備間傳遞時,每次傳遞內容不應超過 64KB。

接口說明

SystemPasteboard 提供系統剪貼板操作的相關接口,比如復制、粘貼、配置回調等。PasteData 是剪貼板服務操作的數據對象,一個 PasteData 由若干個內容節點(PasteData.Record)和一個屬性集合對象(PasteData.DataProperty)組成。Record 是存放剪貼板數據內容信息的最小單位,每個 Record 都有其特定的 MIME 類型,如純文本、HTML、URI、Intent。剪貼板數據的屬性信息存在放 DataProperty 中,包括標簽、時間戳、“僅在本地”標記位等。

  • SystemPasteboard

SystemPasteboard 提供系統剪貼板服務的操作接口,比如復制、粘貼、配置回調等。

接口名 描述
getSystemPasteboard(Context context) 獲取系統剪切板服務的對象實例。
getPasteData() 讀取當前系統剪貼板中的數據。
hasPasteData() 判斷當前系統剪貼板中是否有內容。
setPasteData(PasteData data) 將剪貼板數據寫入到系統剪貼板。
clear() 判斷當前系統剪貼板中是否有內容。清空系統剪貼板數據。
addPasteDataChangedListener(IPasteDataChangedListener listener) 用戶程序添加系統剪貼板數據變化的回調,當系統剪貼板數據發生變化時,會觸發用戶程序的回調實現。
removePasteDataChangedListener(IPasteDataChangedListener listener) 用戶程序移除系統剪貼板數據變化的回調。
  • PasteData

PasteData 是剪貼板服務操作的數據對象,其中內容節點定義為 PasteData.Record,屬性集合定義為 PasteData.DataProperty。

接口名 描述
PasteData() 構造器,創建一個空內容數據對象。
createPlainTextData(CharSequence text) 構建一個包含純文本內容節點的數據對象。
creatHtmlData(String htmlText) 構建一個包含 HTML 內容節點的數據對象。
creatUriData(Uri uri) 構建一個包含 URI 內容節點的數據對象。
creatIntentData(Intent intent) 構建一個包含 Intent 內容節點的數據對象。
getPrimaryMimeType() 獲取數據對象中首個內容節點的 MIME 類型,如果沒有查詢到內容,將返回一個空字符串。
getPrimaryText() 獲取數據對象中首個內容節點的純文本內容,如果沒有查詢到內容,將返回一個空對象。
addTextRecord(CharSequence text) 向數據對象中添加一個純文本內容節點,該方法會自動更新數據屬性中的MIME類型集合,最多只能添加 128 個內容節點。
addRecord(Record record) 向數據對象中添加一個內容節點,該方法會自動更新數據屬性中的 MIME 類型集合,最多只能添加 128 個內容節點。
getRecordCount() 獲取數據對象中內容節點的數量。
getRecordAt(int index) 獲取數據對象在指定下標處的內容節點,如果操作失敗會返回空對象。
removeRecordAt(int index) 移除數據對象在指定下標處的內容節點,如果操作成功會返回 true,操作失敗會返回 false。
getMimeTypes() 獲取數據對象中上所有內容節點的MIME類型列表,當內容節點為空時,返回列表為空對象。
getProperty() 獲取該數據對象的屬性集合成員。
常量名 描述
MIMETYPE_TEXT_PLAIN= “text/plain” 純文本的 MIME 類型定義。
MIMETYPE_TEXT_HTML= “text/html” HTML的 MIM E類型定義。
MIMETYPE_TEXT_URI= “text/uri” URI的 MIME 類型定義。
MIMETYPE_TEXT_INTENT= “text/ohos.intent” Intent的 MIME 類型定義。
MAX_RECORD_NUM=128 單個 PasteData 中所能包含的 Record 的數量上限。
  • PasteData.Record

一個 PasteData 中包含若干個特定MIME類型的 PasteData.Record,每個 Record 是存放剪貼板數據內容信息的最小單位。

接口名 描述
createPlainTextRecord(CharSequence text) 構造一個 MIME 類型為純文本的內容節點。
createHtmlTextRecord(String htmlText) 構造一個 MIME 類型為HTML的內容節點。
createUriRecord(Uri uri) 構造一個 MIME 類型為URI的內容節點。
createIntentRecord(Intent intent) 構造一個 MIME 類型為Intent的內容節點。
getPlainText() 獲取該內容節點中的文本內容,如果沒有內容將返回空對象。
getHtmlText() 獲取該內容節點中的 HTML 內容,如果沒有內容將返回空對象。
getUri() 獲取該內容節點中的 URI 內容,如果沒有內容將返回空對象。
getIntent() 獲取該內容節點中的 Intent 內容,如果沒有內容將返回空對象。
getMimeType() 獲取該內容節點的 MIME 類型。
convertToText(Context context) 將該內容節點的內容轉為文本形式。
  • PasteData.DataProperty

每個 PasteData 中都有一個 PasteData.DataProperty 成員,其中存放著該數據對象的屬性集合,例如自定義標簽、MIME 類型集合列表,“僅在本地”標記位等。

接口名 描述
getMimeTypes() 獲取所屬數據對象的 MIME 類型集合列表,當內容節點為空時,返回列表為空對象。
hasMimeType(String mimeType) 判斷所屬數據對象中是否包含特定 MIME類型的內容。
getTimestamp() 獲取所屬數據對象被寫入系統剪貼板時的時間戳,如果該數據對象尚未被寫入,則返回0。
setTag(CharSequence tag) 設置自定義標簽。
getTag() 獲取自定義標簽。
setAdditions(PacMap extraProps) 設置一些附加鍵值對信息
getAdditions() 獲取附加鍵值對信息。
setLocalOnly(boolean isLocalonly) 配置“僅在本地”標志位,默認配置為false,表示此數據對象能在分布式剪貼板場景下跨設備傳遞,否則只在本地設備使用。
isLocalOnly() 查詢“僅在本地”標志位。
  • IPasteDataChangedListener

IPasteDataChangedListener 是定義剪貼板數據變化回調的接口類,開發者需要實現此接口來編碼觸發回調時的處理邏輯。

接口名 描述
onChanged() 當系統剪貼板數據發生變化時的回調接口。

開發步驟

  • 應用A獲取系統剪貼板服務。
SystemPasteboard pasteboard = SystemPasteboard.getSystemPasteboard(appContext);
  • 應用A向系統剪貼板中寫入一條純文本數據。
 if (pasteboard != null) {
       pasteboard.setPasteData(PasteData.creatPlainTextData("Hello, world!"));
   }
  • 應用 B 從系統剪貼板讀取數據,將數據對象中的首個文本類型(純文本/HTML)內容信息在控件中顯示,忽略其他類型內容。
 PasteData pasteData = pasteboard.getPasteData();
   if (pasteData == null) {
       return;
   }
   DataProperty dataProperty = pasteData.getProperty();
   boolean hasHtml = dataProperty.hasMimeType(PasteData.MIMETYPE_TEXT_HTML);
   boolean hasText = dataProperty.hasMimeType(PasteData.MIMETYPE_TEXT_PLAIN);
   if (hasHtml || hasText) {
       for (int i = 0; i < pasteData.getRecordCount(); i++) {
           Record record = pasteData.getRecordAt(i);
           String mimeType = record.getMimeType();
           if (mimeType.equals(PasteData.MIMETYPE_TEXT_HTML)) {
               text.setText(record.getHtmlText());
               break;
           } else if (mimeType.equals(PasteData.MIMETYPE_TEXT_PLAIN)) {
               text.setText(record.getPlainText().toString());
               break;
           }
       }
   }
  • 應用 C 注冊添加系統剪貼板數據變化回調,當系統剪貼板數據發生變化時觸發處理邏輯。
   IPasteDataChangedListener listener = new IPasteDataChangedListener() {
       @Override
       public void onChanged() {
           PasteData pasteData = pasteboard.getPasteData();
           if (pasteData == null) {
               return;
           }
           // Operations to handle data change on the system pasteboard
       }
   };
   pasteboard.addPasteDataChangedListener(listener);·
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鴻蒙
    +關注

    關注

    57

    文章

    2310

    瀏覽量

    42743
  • HarmonyOS
    +關注

    關注

    79

    文章

    1967

    瀏覽量

    30018
收藏 人收藏

    評論

    相關推薦

    labview利用調用節點從剪貼板獲取圖像生成EXE文件無法使用

    labview利用調用節點從剪貼板獲取圖像生成EXE文件時無法使用,這是什么原因呢,怎么改呢
    發表于 06-06 22:17

    HarmonyOS應用開發-剪貼板功能實現

    粘貼版是一個常用的功能,用戶通過系統剪貼板服務,可實現應用之間的簡單數據傳遞。例如:在應用A中復制的數據,可以在應用B中粘貼,反之亦可。效果如圖: 關鍵代碼如下:public class
    發表于 03-30 10:48

    OpenHarmony 3.1 Release最全資料免費獲取

    對靜態壁紙管理能力的支持  - 新增對下載服務管理能力的支持  主要涉及如下需求:  I4U2WR 新增特性:時間時區同步管理  I4ZTTE【新增特性】剪貼板數據項-支持將剪貼板數據項強制轉換為文本
    發表于 03-31 14:23

    基于GoKit的產品開發指導

    基于GoKit的產品開發指導,有板子的可以下載看看的
    發表于 11-16 19:00 ?0次下載

    ZigBee2007視頻教程-應用開發指導

    ZigBee2007視頻教程-應用開發指導ZigBee2007視頻教程-應用開發指導ZigBee2007視頻教程-應用開發指導ZigBee2007視頻教程-應用開發指導
    發表于 12-29 10:31 ?19次下載

    JAVA教程之使用剪貼板的復制粘貼程序

    JAVA教程之使用剪貼板的復制粘貼程序,很好的學習資料。
    發表于 03-31 11:13 ?5次下載

    Delphi教程之監視剪貼板

    Delphi教程之監視剪貼板,很好的Delphi資料,快來下載吧。
    發表于 04-11 16:09 ?9次下載

    小米手機和PC的共享剪貼板上線,PC端裝云服務客戶端就OK

    劉鳴稱:“看到有用戶在要共享剪貼板,其實我們已經支持了,只需要電腦端裝小米云服務客戶端就可以了。”
    的頭像 發表于 11-24 09:09 ?7614次閱讀

    蘋果iOS應用程序不經過用戶同意讀取剪貼板數據

    據Macrumors報道,最新研究顯示數十種流行的iOS應用程序,在未經用戶同意的情況下,讀取剪貼板的內容,其中可能包含敏感信息。
    的頭像 發表于 03-16 09:19 ?2809次閱讀

    iOS 14的隱私功能顯示了復制到剪貼板的TikTok閱讀文本

    開發人員開始下載并使用iOS 14 beta版,他們發現流行的視頻共享平臺TikTok是讀取用戶復制到剪貼板的文本的應用程序之一。從下面的視頻中可以看到,在TikTok應用程序打開時,蘋果的新隱私警告繼續出現在屏幕上。
    的頭像 發表于 07-03 16:33 ?2312次閱讀

    HarmonyOS應用開發案例 剪貼板功能實現

    粘貼版是一個常用的功能,用戶通過系統剪貼板服務,可實現應用之間的簡單數據傳遞。例如:在應用A中復制的數據,可以在應用B中粘貼,反之亦可。 效果如圖: 關鍵代碼如下: public class
    的頭像 發表于 03-30 10:41 ?1214次閱讀
    HarmonyOS應用<b class='flag-5'>開發</b>案例 <b class='flag-5'>剪貼板</b>功能實現

    ADP1074: 帶有活性剪貼板和 <span class="analog-coupler" >i </span> Cloupler數據表的孤立、同步前向控制器 ADI

    電子發燒友網為你提供ADI(ADI)ADP1074: 帶有活性剪貼板和 i
    發表于 10-08 16:41
    ADP1074: 帶有活性<b class='flag-5'>剪貼板</b>和 <span class="analog-coupler" >i </span> Cloupler數據表的孤立、同步前向控制器 ADI

    怎么將剪貼板數據導入到labview數組

    剪貼板數據導入到LabVIEW數組可以通過以下步驟完成。首先,需要使用LabVIEW自帶的函數庫VIs來實現剪貼板數據的獲取和處理。 第一步是獲取剪貼板數據。LabVIEW提供了Clipboard
    的頭像 發表于 01-05 13:35 ?1341次閱讀

    鴻蒙開發系統基礎能力:ohos.pasteboard 剪貼板

    以下各項對應的系統能力均為SystemCapability.MiscServices.Pasteboard。
    的頭像 發表于 06-26 16:48 ?352次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>系統基礎能力:ohos.pasteboard <b class='flag-5'>剪貼板</b>

    鴻蒙開發Ability Kit程序訪問控制:使用粘貼控件

    粘貼控件是一種特殊的系統安全控件,它允許應用在用戶的授權下無提示地讀取剪貼板數據。
    的頭像 發表于 07-03 09:15 ?284次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>Ability Kit程序訪問控制:使用粘貼控件