HarmonyOS鸿蒙Next中怎么打开应用内文件
HarmonyOS鸿蒙Next中怎么打开应用内文件 使用ArkTS,怎么根据文件类型打开对应的应用来查看文件呀?
类似安卓:
private void openFile(File file) {
let intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
let type = getMIMEType(file);
intent.setDataAndType(Uri.fromFile(file), type);
startActivity(intent);
}
6 回复
在HOS 里, UIAbility类似安卓的Activity, 一个UIAbility(caller)要调用外部的UIAbility(callee)执行进一步的操作, 首先有对相应的UIAbility(callee)进行配置, 当caller调用callee时,要传递相关的参数(包括 要匹配的 callee的参数, 也包含操作对象的参数)。
下面的连接有具体的解释:
更多关于HarmonyOS鸿蒙Next中怎么打开应用内文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
根据文档写了个方法:
export function openFile(path: string, contentType: string) {
let uri = fileuri.getUriFromPath(path);
let want = {
action: "ohos.want.action.viewData",
uri: uri,
type: contentType
}
let context = getContext(this) as common.UIAbilityContext;
context.startAbility(want)
.then(() => {
console.info('Invoke getCurrentBundleStats succeeded.');
})
.catch((err) => {
console.error(`Invoke startAbility failed, code is ${err.code}, message is ${err.message}`);
});
}
代码会走到then
里边,但是会退到桌面,然后6s之后没响应就挂了:
STRINGID:THREAD_BLOCK_6SApp
MSG:App main thread is not response! EventHandler dump begain curTime:20240126 10:35 AM,
在什么调试环境下调试的呢?
api9,真机:P50,HarmonyOS 4.0.0,
在HarmonyOS鸿蒙Next中,打开应用内文件可以通过以下步骤实现:
-
使用File API:通过
ohos.file.fs
模块的File
类,可以访问应用内文件。例如,使用openSync
方法打开文件,然后进行读写操作。 -
文件路径:应用内文件通常存储在
/data/data/<包名>/files/
目录下。可以通过context.getFilesDir()
获取该路径。 -
示例代码:
const filePath = context.getFilesDir() + '/example.txt'; const file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); const content = fs.readSync(file.fd, new ArrayBuffer(1024)); console.log(String.fromCharCode.apply(null, new Uint8Array(content))); fs.closeSync(file.fd);