HarmonyOS 鸿蒙Next通过系统方法打开图片或word/excel
HarmonyOS 鸿蒙Next通过系统方法打开图片或word/excel
我的项目会下载图片或文档,包含jpg/png/word/excel/pdf/ppt等,我会下载到getContext(this).cacheDir目录,下载完成后要打开文件让用户查看,现在我已经下载成功。鸿蒙系统支持打开查看这些下载的文件吗?我用什么方法可以打开下载的文件,或者怎么调用一个系统弹窗让用户选择用第三方应用打开这些文件?
2 回复
可以参考此示例,filesDir,cacheDir,tempDir 下的文件均可被打开查看: <br>
import common from '@ohos.app.ability.common';
import fs from '@ohos.file.fs';
import { filePreview } from '@kit.PreviewKit';
import { BusinessError } from '@kit.BasicServicesKit';
import fileUri from '@ohos.file.fileuri';
// let timeout = 0;
let context = getContext(this) as common.UIAbilityContext;
//新建一个本地应用文件
let filesDir = context.filesDir;
let file = fs.openSync(filesDir + '/test.txt', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
console.log('----------filesDir:' + filesDir)
fs.writeSync(file.fd, 'upload file test'); //以同步方法将数据写入文件
fs.closeSync(file);
// 获取文件的沙箱路径
let pathInSandbox = context.filesDir + "/test.txt";
console.log('----------pathInSandbox:'+ pathInSandbox)
// 将沙箱路径转换为uri
let uri = fileUri.getUriFromPath(pathInSandbox);
console.log('-----------uri:' + uri);
let uiContext = getContext(this);
filePreview.canPreview(uiContext, uri).then((result) => { //根据文件的uri判断文件是否可预览 传入支持的文件类型且项目存在时会返回true
console.info('canPreview. result = ' + result);
}).catch((err: BusinessError) => {
console.error('canPreview failed, err = ' + err.message);
})
let fileInfo: filePreview.PreviewInfo = { // 文件预览信息,包含了文件标题名、uri以及文件类型(mimeType)
title: 'test.txt',
uri: uri,
mimeType: 'text/plain' // 文件(夹)的媒体资源类型,如text/plain
};
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
[@State](/user/State) message: string = '预览文件';
build() {
Row() {
Column() {
Button(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
filePreview.openPreview(uiContext, fileInfo).then(() => {
console.info('openPreview success');
}).catch((err: BusinessError) => {
console.error('openPreview failed, err = ' + err.message);
});
})
}
.width('100%')
}
.height('100%')
}
}
更多关于HarmonyOS 鸿蒙Next通过系统方法打开图片或word/excel的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,通过系统方法打开图片或Word/Excel文件,可以通过以下步骤实现:
-
图片文件:
- 使用
MediaStore
API查询或获取图片文件的URI。 - 创建一个
Intent
对象,设置Intent.ACTION_VIEW
为动作。 - 通过
Intent.setDataAndType
方法设置图片的URI和MIME类型(如image/jpeg
或image/png
)。 - 调用
startActivity
方法启动系统图片查看器。
- 使用
-
Word/Excel文件:
- 确定文件存储路径或URI。
- 创建一个
Intent
对象,设置Intent.ACTION_VIEW
为动作。 - 使用
Intent.setDataAndType
方法设置文件的URI和MIME类型(如application/vnd.openxmlformats-officedocument.wordprocessingml.document
为Word,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
为Excel)。 - 调用
startActivity
方法启动系统办公应用(如WPS或Microsoft Office)。
请注意,系统中需存在能够处理相应MIME类型的应用,否则可能会提示无法找到可以打开该文件的应用。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html