新聞中心
場(chǎng)景介紹

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


咨詢
建站咨詢
