新聞中心
場景介紹

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊、虛擬主機、營銷軟件、網(wǎng)站建設、金山網(wǎng)站維護、網(wǎng)站推廣。
同一設備的應用程序 A、B 之間可以借助系統(tǒng)剪貼板服務完成簡單數(shù)據(jù)的傳遞,即應用程序 A 向剪貼板服務寫入數(shù)據(jù)后,應用程序 B 可以從中讀取出數(shù)據(jù)。在滿足分布式剪貼板服務的使用條件時,應用程序 A、B 也可以來自組網(wǎng)內(nèi)的不同設備。
圖1剪貼板服務示意圖
在使用剪貼板服務時,需要注意以下幾點:
- 只有在前臺獲取到焦點的應用才有讀取系統(tǒng)剪貼板的權限(系統(tǒng)默認輸入法應用除外)。
- 寫入到剪貼板服務中的剪貼板數(shù)據(jù)不會隨應用程序結束而銷毀。
- 對同一用戶而言,寫入剪貼板服務的數(shù)據(jù)會被下一次寫入的剪貼板數(shù)據(jù)所覆蓋。
- 如果設備滿足分布式組網(wǎng)條件,且進行復制操作的設備打開了剪貼板分布式開關,未配置“僅在本地”標志位的剪貼板數(shù)據(jù)里的 MIME 類型為純文本和 HTML 的內(nèi)容可以被組網(wǎng)內(nèi)其他打開了剪貼板分布式開關的設備粘貼出來。
- 在同一設備內(nèi),剪貼板單次傳遞內(nèi)容不應超過 800KB。在分布式場景下多設備間傳遞時,每次傳遞內(nèi)容不應超過 64KB。
接口說明
SystemPasteboard 提供系統(tǒng)剪貼板操作的相關接口,比如復制、粘貼、配置回調(diào)等。PasteData 是剪貼板服務操作的數(shù)據(jù)對象,一個 PasteData 由若干個內(nèi)容節(jié)點(PasteData.Record)和一個屬性集合對象(PasteData.DataProperty)組成。Record 是存放剪貼板數(shù)據(jù)內(nèi)容信息的最小單位,每個 Record 都有其特定的 MIME 類型,如純文本、HTML、URI、Intent。剪貼板數(shù)據(jù)的屬性信息存在放 DataProperty 中,包括標簽、時間戳、“僅在本地”標記位等。
SystemPasteboard
SystemPasteboard 提供系統(tǒng)剪貼板服務的操作接口,比如復制、粘貼、配置回調(diào)等。
| 接口名 | 描述 |
|---|---|
| getSystemPasteboard(Context context) | 獲取系統(tǒng)剪切板服務的對象實例。 |
| getPasteData() | 讀取當前系統(tǒng)剪貼板中的數(shù)據(jù)。 |
| hasPasteData() | 判斷當前系統(tǒng)剪貼板中是否有內(nèi)容。 |
| setPasteData(PasteData data) | 將剪貼板數(shù)據(jù)寫入到系統(tǒng)剪貼板。 |
| clear() | 清空系統(tǒng)剪貼板數(shù)據(jù)。 |
| addPasteDataChangedListener(IPasteDataChangedListener listener) | 用戶程序添加系統(tǒng)剪貼板數(shù)據(jù)變化的回調(diào),當系統(tǒng)剪貼板數(shù)據(jù)發(fā)生變化時,會觸發(fā)用戶程序的回調(diào)實現(xiàn)。 |
| removePasteDataChangedListener(IPasteDataChangedListener listener) | 用戶程序移除系統(tǒng)剪貼板數(shù)據(jù)變化的回調(diào)。 |
PasteData
PasteData 是剪貼板服務操作的數(shù)據(jù)對象,其中內(nèi)容節(jié)點定義為 PasteData.Record,屬性集合定義為 PasteData.DataProperty。
| 接口名 | 描述 |
|---|---|
| PasteData() | 構造器,創(chuàng)建一個空內(nèi)容數(shù)據(jù)對象。 |
| createPlainTextData(CharSequence text) | 構建一個包含純文本內(nèi)容節(jié)點的數(shù)據(jù)對象。 |
| creatHtmlData(String htmlText) | 構建一個包含 HTML 內(nèi)容節(jié)點的數(shù)據(jù)對象。 |
| creatUriData(Uri uri) | 構建一個包含 URI 內(nèi)容節(jié)點的數(shù)據(jù)對象。 |
| creatIntentData(Intent intent) | 構建一個包含 Intent 內(nèi)容節(jié)點的數(shù)據(jù)對象。 |
| getPrimaryMimeType() | 獲取數(shù)據(jù)對象中首個內(nèi)容節(jié)點的 MIME 類型,如果沒有查詢到內(nèi)容,將返回一個空字符串。 |
| getPrimaryText() | 獲取數(shù)據(jù)對象中首個內(nèi)容節(jié)點的純文本內(nèi)容,如果沒有查詢到內(nèi)容,將返回一個空對象。 |
| addTextRecord(CharSequence text) | 向數(shù)據(jù)對象中添加一個純文本內(nèi)容節(jié)點,該方法會自動更新數(shù)據(jù)屬性中的MIME類型集合,最多只能添加 128 個內(nèi)容節(jié)點。 |
| addRecord(Record record) | 向數(shù)據(jù)對象中添加一個內(nèi)容節(jié)點,該方法會自動更新數(shù)據(jù)屬性中的 MIME 類型集合,最多只能添加 128 個內(nèi)容節(jié)點。 |
| getRecordCount() | 獲取數(shù)據(jù)對象中內(nèi)容節(jié)點的數(shù)量。 |
| getRecordAt(int index) | 獲取數(shù)據(jù)對象在指定下標處的內(nèi)容節(jié)點,如果操作失敗會返回空對象。 |
| removeRecordAt(int index) | 移除數(shù)據(jù)對象在指定下標處的內(nèi)容節(jié)點,如果操作成功會返回 true,操作失敗會返回 false。 |
| getMimeTypes() | 獲取數(shù)據(jù)對象中上所有內(nèi)容節(jié)點的MIME類型列表,當內(nèi)容節(jié)點為空時,返回列表為空對象。 |
| getProperty() | 獲取該數(shù)據(jù)對象的屬性集合成員。 |
| 常量名 | 描述 |
|---|---|
| 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 的數(shù)量上限。 |
PasteData.Record
一個 PasteData 中包含若干個特定MIME類型的 PasteData.Record,每個 Record 是存放剪貼板數(shù)據(jù)內(nèi)容信息的最小單位。
| 接口名 | 描述 |
|---|---|
| createPlainTextRecord(CharSequence text) | 構造一個 MIME 類型為純文本的內(nèi)容節(jié)點。 |
| createHtmlTextRecord(String htmlText) | 構造一個 MIME 類型為HTML的內(nèi)容節(jié)點。 |
| createUriRecord(Uri uri) | 構造一個 MIME 類型為URI的內(nèi)容節(jié)點。 |
| createIntentRecord(Intent intent) | 構造一個 MIME 類型為Intent的內(nèi)容節(jié)點。 |
| getPlainText() | 獲取該內(nèi)容節(jié)點中的文本內(nèi)容,如果沒有內(nèi)容將返回空對象。 |
| getHtmlText() | 獲取該內(nèi)容節(jié)點中的 HTML 內(nèi)容,如果沒有內(nèi)容將返回空對象。 |
| getUri() | 獲取該內(nèi)容節(jié)點中的 URI 內(nèi)容,如果沒有內(nèi)容將返回空對象。 |
| getIntent() | 獲取該內(nèi)容節(jié)點中的 Intent 內(nèi)容,如果沒有內(nèi)容將返回空對象。 |
| getMimeType() | 獲取該內(nèi)容節(jié)點的 MIME 類型。 |
| convertToText(Context context) | 將該內(nèi)容節(jié)點的內(nèi)容轉為文本形式。 |
PasteData.DataProperty
每個 PasteData 中都有一個 PasteData.DataProperty 成員,其中存放著該數(shù)據(jù)對象的屬性集合,例如自定義標簽、MIME 類型集合列表,“僅在本地”標記位等。
| 接口名 | 描述 |
|---|---|
| getMimeTypes() | 獲取所屬數(shù)據(jù)對象的 MIME 類型集合列表,當內(nèi)容節(jié)點為空時,返回列表為空對象。 |
| hasMimeType(String mimeType) | 判斷所屬數(shù)據(jù)對象中是否包含特定 MIME類型的內(nèi)容。 |
| getTimestamp() | 獲取所屬數(shù)據(jù)對象被寫入系統(tǒng)剪貼板時的時間戳,如果該數(shù)據(jù)對象尚未被寫入,則返回0。 |
| setTag(CharSequence tag) | 設置自定義標簽。 |
| getTag() | 獲取自定義標簽。 |
| setAdditions(PacMap extraProps) | 設置一些附加鍵值對信息。 |
| getAdditions() | 獲取附加鍵值對信息。 |
| setLocalOnly(boolean isLocalonly) | 配置“僅在本地”標志位,默認配置為false,表示此數(shù)據(jù)對象能在分布式剪貼板場景下跨設備傳遞,否則只在本地設備使用。 |
| isLocalOnly() | 查詢“僅在本地”標志位。 |
IPasteDataChangedListener
IPasteDataChangedListener 是定義剪貼板數(shù)據(jù)變化回調(diào)的接口類,開發(fā)者需要實現(xiàn)此接口來編碼觸發(fā)回調(diào)時的處理邏輯。
| 接口名 | 描述 |
|---|---|
| onChanged() | 當系統(tǒng)剪貼板數(shù)據(jù)發(fā)生變化時的回調(diào)接口。 |
開發(fā)步驟
- 應用A獲取系統(tǒng)剪貼板服務。
SystemPasteboard pasteboard = SystemPasteboard.getSystemPasteboard(appContext);
- 應用A向系統(tǒng)剪貼板中寫入一條純文本數(shù)據(jù)。
if (pasteboard != null) {
pasteboard.setPasteData(PasteData.creatPlainTextData("Hello, world!"));
}
- 應用 B 從系統(tǒng)剪貼板讀取數(shù)據(jù),將數(shù)據(jù)對象中的首個文本類型(純文本/HTML)內(nèi)容信息在控件中顯示,忽略其他類型內(nèi)容。
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 注冊添加系統(tǒng)剪貼板數(shù)據(jù)變化回調(diào),當系統(tǒng)剪貼板數(shù)據(jù)發(fā)生變化時觸發(fā)處理邏輯。
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); 標題名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS剪貼板開發(fā)指導
URL標題:http://www.5511xx.com/article/ccoeesj.html


咨詢
建站咨詢
