新聞中心
開(kāi)發(fā)者可以通過(guò) DataAbilityHelper 類(lèi)來(lái)訪(fǎng)問(wèn)當(dāng)前應(yīng)用或其他應(yīng)用提供的共享數(shù)據(jù)。 DataAbilityHelper 作為客戶(hù)端,與提供方的 Data 進(jìn)行通信。Data 接收到請(qǐng)求后,執(zhí)行相應(yīng)的處理,并返回結(jié)果。DataAbilityHelper 提供了一系列與 Data Ability 對(duì)應(yīng)的方法。

創(chuàng)新互聯(lián)建站專(zhuān)注于彭州企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,成都商城網(wǎng)站開(kāi)發(fā)。彭州網(wǎng)站建設(shè)公司,為彭州等地區(qū)提供建站服務(wù)。全流程按需定制,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
下面介紹 DataAbilityHelper 具體的使用步驟。
聲明使用權(quán)限
如果待訪(fǎng)問(wèn)的 Data 聲明了訪(fǎng)問(wèn)需要權(quán)限,則訪(fǎng)問(wèn)此 Data 需要在配置文件中聲明需要此權(quán)限。聲明請(qǐng)參考權(quán)限申請(qǐng)字段說(shuō)明。
"reqPermissions": [
{
"name": "com.example.myapplication5.DataAbility.DATA"
}
]創(chuàng)建 DataAbilityHelper
DataAbilityHelper為開(kāi)發(fā)者提供了creator()方法來(lái)創(chuàng)建DataAbilityHelper實(shí)例。該方法為靜態(tài)方法,有多個(gè)重載。最常見(jiàn)的方法是通過(guò)傳入一個(gè)context對(duì)象來(lái)創(chuàng)建DataAbilityHelper對(duì)象。
獲取helper對(duì)象示例:
DataAbilityHelper helper = DataAbilityHelper.creator(this);訪(fǎng)問(wèn)Data Ability
DataAbilityHelper 為開(kāi)發(fā)者提供了一系列的接口來(lái)訪(fǎng)問(wèn)不同類(lèi)型的數(shù)據(jù)(文件、數(shù)據(jù)庫(kù)等)。
- 訪(fǎng)問(wèn)文件
DataAbilityHelper 為開(kāi)發(fā)者提供了 FileDescriptor openFile (Uri uri, String mode)方法來(lái)操作文件。此方法需要傳入兩個(gè)參數(shù),其中 uri 用來(lái)確定目標(biāo)資源路徑,mode 用來(lái)指定打開(kāi)文件的方式,可選方式包含“r”(讀), “w”(寫(xiě)), “rw”(讀寫(xiě)),“wt”(覆蓋寫(xiě)),“wa”(追加寫(xiě)),“rwt”(覆蓋寫(xiě)且可讀)。
該方法返回一個(gè)目標(biāo)文件的 FD(文件描述符),把文件描述符封裝成流,開(kāi)發(fā)者就可以對(duì)文件流進(jìn)行自定義處理。
訪(fǎng)問(wèn)文件示例:
// 讀取文件描述符
FileDescriptor fd = helper.openFile(uri, "r");
FileInputStream fis = new FileInputStream(fd);
- 訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)
DataAbilityHelper 為開(kāi)發(fā)者提供了增、刪、改、查以及批量處理等方法來(lái)操作數(shù)據(jù)庫(kù)。
| 方法 | 描述 |
|---|---|
| ResultSet query(Uri uri, String[] columns, DataAbilityPredicates predicates) | 查詢(xún)數(shù)據(jù)庫(kù) |
| int insert(Uri uri, ValuesBucket value) | 向數(shù)據(jù)庫(kù)中插入單條數(shù)據(jù) |
| int batchInsert(Uri uri, ValuesBucket[] values) | 向數(shù)據(jù)庫(kù)中插入多條數(shù)據(jù) |
| int delete(Uri uri, DataAbilityPredicates predicates) | 刪除一條或多條數(shù)據(jù) |
| int update(Uri uri, ValuesBucket value, DataAbilityPredicates predicates) | 更新數(shù)據(jù)庫(kù) |
| DataAbilityResult[] executeBatch(ArrayList |
批量操作數(shù)據(jù)庫(kù) |
這些方法的使用說(shuō)明如下:
- query()
查詢(xún)方法,其中 uri 為目標(biāo)資源路徑,columns 為想要查詢(xún)的字段。開(kāi)發(fā)者的查詢(xún)條件可以通過(guò) DataAbilityPredicates 來(lái)構(gòu)建。查詢(xún)用戶(hù)表中 id 在 101-103 之間的用戶(hù),并把結(jié)果打印出來(lái),代碼示例如下:
DataAbilityHelper helper = DataAbilityHelper.creator(this);
// 構(gòu)造查詢(xún)條件
DataAbilityPredicates predicates = new DataAbilityPredicates();
predicates.between("userId", 101, 103);
// 進(jìn)行查詢(xún)
ResultSet resultSet = helper.query(uri,columns,predicates);
// 處理結(jié)果
resultSet.goToFirstRow();
do{
// 在此處理ResultSet中的記錄;
}while(resultSet.goToNextRow());
- insert()
新增方法,其中 uri 為目標(biāo)資源路徑,ValuesBucket 為要新增的對(duì)象。插入一條用戶(hù)信息的代碼示例如下:
DataAbilityHelper helper = DataAbilityHelper.creator(this);
// 構(gòu)造插入數(shù)據(jù)
ValuesBucket valuesBucket = new ValuesBucket();
valuesBucket.putString("name", "Tom");
valuesBucket.putInteger("age", 12);
helper.insert(uri, valuesBucket);
- batchInsert()
批量插入方法,和 insert() 類(lèi)似。批量插入用戶(hù)信息的代碼示例如下:
DataAbilityHelper helper = DataAbilityHelper.creator(this);
// 構(gòu)造插入數(shù)據(jù)
ValuesBucket[] values = new ValuesBucket[2];
value[0] = new ValuesBucket();
value[0].putString("name", "Tom");
value[0].putInteger("age", 12);
value[1] = new ValuesBucket();
value[1].putString("name", "Tom1");
value[1].putInteger("age", 16);
helper.batchInsert(uri, values);
- delete()
刪除方法,其中刪除條件可以通過(guò) DataAbilityPredicates 來(lái)構(gòu)建。刪除用戶(hù)表中 id 在 101-103 之間的用戶(hù),代碼示例如下:
DataAbilityHelper helper = DataAbilityHelper.creator(this);
// 構(gòu)造刪除條件
DataAbilityPredicates predicates = new DataAbilityPredicates();
predicates.between("userId", 101,103);
helper.delete(uri,predicates);
- update()
更新方法,更新數(shù)據(jù)由 ValuesBucket 傳入,更新條件由 DataAbilityPredicates 來(lái)構(gòu)建。更新 id 為 102 的用戶(hù),代碼示例如下:
DataAbilityHelper helper = DataAbilityHelper.creator(this);
// 構(gòu)造更新條件
DataAbilityPredicates predicates = new DataAbilityPredicates();
predicates.equalTo("userId",102);
// 構(gòu)造更新數(shù)據(jù)
ValuesBucket valuesBucket = new ValuesBucket();
valuesBucket.putString("name", "Tom");
valuesBucket.putInteger("age", 12);
helper.update(uri, valuesBucket, predicates);
- executeBatch()
此方法用來(lái)執(zhí)行批量操作。DataAbilityOperation 中提供了設(shè)置操作類(lèi)型、數(shù)據(jù)和操作條件的方法,開(kāi)發(fā)者可自行設(shè)置自己要執(zhí)行的數(shù)據(jù)庫(kù)操作。插入多條數(shù)據(jù)的代碼示例如下:
DataAbilityHelper helper = DataAbilityHelper.creator(abilityObj, insertUri);
// 構(gòu)造批量操作
ValuesBucket value1 = initSingleValue();
DataAbilityOperation opt1 = DataAbilityOperation.newInsertBuilder(insertUri).withValuesBucket(value1).build();
ValuesBucket value2 = initSingleValue2();
DataAbilityOperation opt2 = DataAbilityOperation.newInsertBuilder(insertUri).withValuesBucket(value2).build();
ArrayList operations = new ArrayList();
operations.add(opt1);
operations.add(opt2);
DataAbilityResult[] result = helper.executeBatch(insertUri, operations); 網(wǎng)站名稱(chēng):創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS訪(fǎng)問(wèn)Data
網(wǎng)頁(yè)鏈接:http://www.dlmjj.cn/article/dpphphe.html


咨詢(xún)
建站咨詢(xún)
