生活随笔
收集整理的這篇文章主要介紹了
HarmonyOS之剪贴板的功能和使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、剪貼板概述
用戶通過系統剪貼板服務,可實現應用之間的簡單數據傳遞。例如:在應用 A 中復制的數據,可以在應用 B 中粘貼,反之亦可。 HarmonyOS 提供系統剪貼板服務的操作接口,支持用戶程序從系統剪貼板中讀取、寫入和查詢剪貼板數據,以及添加、移除系統剪貼板數據變化的回調。 HarmonyOS 提供剪貼板數據的對象定義,包含內容對象和屬性對象。
二、使用場景
同一設備的應用程序 A、B 之間可以借助系統剪貼板服務完成簡單數據的傳遞,即應用程序 A 向剪貼板服務寫入數據后,應用程序 B 可以從中讀取出數據。 剪貼板服務如下所示:
在使用剪貼板服務時,需要注意以下幾點: 只有在前臺獲取到焦點的應用才有讀取系統剪貼板的權限(系統默認輸入法應用除外); 寫入到剪貼板服務中的剪貼板數據不會隨應用程序結束而銷毀; 對同一用戶而言,寫入剪貼板服務的數據會被下一次寫入的剪貼板數據所覆蓋; 在同一設備內,剪貼板單次傳遞內容不應超過 500 KB。
三、API 說明
① 剪貼板 API
SystemPasteboard 提供系統剪貼板操作的相關接口,比如復制、粘貼、配置回調等。 PasteData 是剪貼板服務操作的數據對象,一個 PasteData 由若干個內容節點(PasteData.Record)和一個屬性集合對象(PasteData.DataProperty)組成。 Record 是存放剪貼板數據內容信息的最小單位,每個 Record 都有其特定的 MIME 類型,如純文本、HTML、URI、Intent。 剪貼板數據的屬性信息存在放 PasteData.DataProperty 中,包括標簽、時間戳等。
② SystemPasteboard
SystemPasteboard 提供系統剪貼板服務的操作接口,比如復制、粘貼、配置回調等。 SystemPasteboard 的主要接口如下表所示:
接口名描述 getSystemPasteboard(Context context) 獲取系統剪切板服務的對象實例 getPasteData() 讀取當前系統剪貼板中的數據 hasPasteData() 判斷當前系統剪貼板中是否有內容 setPasteData(PasteData data) 將剪貼板數據寫入到系統剪貼板 clear() 清空系統剪貼板數據 addPasteDataChangedListener(IPasteDataChangedListener listener) 用戶程序添加系統剪貼板數據變化的回調,當系統剪貼板數據發生變化時,會觸發用戶程序的回調實現 removePasteDataChangedListener(IPasteDataChangedListener listener) 用戶程序移除系統剪貼板數據變化的回調
② PasteData
PasteData 是剪貼板服務操作的數據對象,其中內容節點定義為 PasteData.Record,屬性集合定義為 PasteData.DataProperty。 PasteData 的主要接口如下表所示:
接口名描述 PasteData() 構造器,創建一個空內容數據對象 creatPlainTextData(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的MIME類型定義 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 是存放剪貼板數據內容信息的最小單位。 PasteData.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 類型集合列表等。 PasteData.DataProperty 的主要接口如下:
接口名描述 getMimeTypes() 獲取所屬數據對象的MIME類型集合列表,當內容節點為空時,返回列表為空對象 hasMimeType(String mimeType) 判斷所屬數據對象中是否包含特定MIME類型的內容 getTimestamp() 獲取所屬數據對象被寫入系統剪貼板時的時間戳,如果該數據對象尚未被寫入,則返回0 setTag(CharSequence tag) 設置自定義標簽 getTag() 獲取自定義標簽 setAdditions(PacMap extraProps) 設置一些附加鍵值對信息 getAdditions() 獲取附加鍵值對信息
⑤ IPasteDataChangedListener
IPasteDataChangedListener 是定義剪貼板數據變化回調的接口類,開發者需要實現此接口來編碼觸發回調時的處理邏輯。 IPasteDataChangedListener 的主要接口如下:
接口名描述 onChanged() 當系統剪貼板數據發生變化時的回調接口
四、使用流程
SystemPasteboard pasteboard
= SystemPasteboard
. getSystemPasteboard ( appContext
) ;
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
) { Text text
= ( Text
) findComponentById ( ResourceTable
. Id_text
) ; for ( int i
= 0 ; i
< pasteData
. getRecordCount ( ) ; i
++ ) { PasteData
. 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 ; } else { } } }
應用 C 注冊添加系統剪貼板數據變化回調,當系統剪貼板數據發生變化時觸發處理邏輯:
IPasteDataChangedListener listener
= new
IPasteDataChangedListener ( ) { @Overridepublic
void onChanged ( ) { PasteData pasteData
= pasteboard
. getPasteData ( ) ; if ( pasteData
== null
) { return ; } } } ; pasteboard
. addPasteDataChangedListener ( listener
) ;
總結
以上是生活随笔 為你收集整理的HarmonyOS之剪贴板的功能和使用 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。