【HarmonyOS NEXT】使用存储后,应用卸载重装后,存储的数据无法查询

文章描述了在使用OHOS的关键资产存储服务后,应用卸载重装时数据无法查询的问题。解决方法是确保在添加资产时设置IS_PERSISTENT为true,使其在应用卸载后数据不被清除。
摘要由CSDN通过智能技术生成

【关键字】

存储 / 卸载 / 重装 / 数据查询

【问题描述】

使用关键资产存储开发服务后,应用卸载重装,存储的数据无法查询。

{ // 允许应用存储持久化的数据
"name": "ohos.permission.STORE_PERSISTENT_DATA",
"reason": "$string:app_name",
"usedScene": {
"abilities": [
"FormAbility"
],
"when":"always"
}
}


let query: asset.AssetMap = new Map();
query.set(asset.Tag.ALIAS, stringToArray('demo_alias')); // 指定了关键资产别名
query.set(asset.Tag.RETURN_TYPE, asset.ReturnType.ALL); // 此处表示需要返回关键资产的所有信息
try {
asset.query(query).then((res: Array<asset.AssetMap>) => {
for (let i = 0; i < res.length; i++) {
// parse the secret.
let secret: Uint8Array = res[i].get(asset.Tag.SECRET) as Uint8Array;
}
}).catch (() => {
console.error(`Failed to query Asset.`);
});
} catch (error) {
console.error(`Failed to query Asset.`);
}

【解决方案】

添加资产时,需要设置 attr.set(asset.Tag.IS_PERSISTENT,true),卸载重装才不会清除,请参考如下代码:

private saveDeviceId(OAID: string) {
let attr: asset.AssetMap = new Map();
attr.set(asset.Tag.SECRET, this.stringToArray(OAID));
attr.set(asset.Tag.ALIAS, this.stringToArray(this.assetAlias));
attr.set(asset.Tag.IS_PERSISTENT,true)
try {
asset.add(attr).then(() => {
console.info(`aaa---Asset added successfully.`)
}).catch((error:BusinessError) => {
console.error(`aaa---Failed to add Asset.1` + error.message);
})
} catch (error) {
console.error(`aaa---Failed to add Asset.2`);
}
}

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/asset-js-add-0000001822162705#ZH-CN_TOPIC_0000001822162705__接口介绍

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值