2021-02-04鸿蒙开发(二.四)

Data Ability
Data提供方可以自定义数据的增、删、改、查,以及文件打开等功能,并对外提供这些接口。

Data存储方式有两种:
文件数据:如文本、图片、音乐等。
结构化数据:如数据库等。

UserDataAbility
用来接收其他APP发送的请求,提供外部程序访问的入口,从而实现应用间的数据访问
实现UserDataAbility,需要在“Project”窗口当前工程的主目录(“entry > src > main > java > com.xxx.xxx”)选择“File > New > Ability > Empty Data Ability”,设置“Data Name”后完成UserDataAbility的创建。

文件存储
在Data中重写FileDescriptor openFile
通过uri来获取

@Override
public FileDescriptor openFile(Uri uri, String mode) throws File NotFoundException {
    // 创建messageParcel
    MessageParcel messageParcel = MessageParcel.obtain();
    File file = new File(uri.getDecodedPathList().get(1));
    if (mode == null || !"rw".equals(mode)) {
        file.setReadOnly();
    }
    FileInputStream fileIs = new FileInputStream(file);
    FileDescriptor fd = fileIs.getFD();
    // 绑定文件描述符
    return messageParcel.dupFileDescriptor(fd);
}

数据库存储
初始化数据库连接。
系统会在应用启动时调用onStart()方法创建Data实例。

private static final String DATABASE_NAME ="UserDataAbility.db";
private static final String DATABASE_NAME_ALIAS = "UserDataAbility";
private static final HiLogLabel LABEL_LOG = new HiLogLabel(HiLog.LOG_APP, 0xD00201, "Data_Log");
private OrmContext ormContext = null;
@Override
public void onStart(Intent intent) {
    super.onStart(intent);
    DatabaseHelper manager = new DatabaseHelper(this);
    ormContext = manager.getOrmContext(DATABASE_NAME_ALIAS, DATABASE_NAME, BookStore.class);
}

查询数据库
ResultSet query​(Uri uri, String[] columns, DataAbilityPredicates predicates)
向数据库中插入单条数据
int insert​(Uri uri, ValuesBucket value)
向数据库中插入多条数据
int batchInsert​(Uri uri, ValuesBucket[] values)
删除一条或多条数据
int delete​(Uri uri, DataAbilityPredicates predicates)
更新数据库
int update​(Uri uri, ValuesBucket value, DataAbilityPredicates predicates)
批量操作数据库
DataAbilityResult[] executeBatch​(ArrayList<DataAbilityOperation> operations)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容