将pdf,ppt,excel文件使用其他应用打开的的时候,使用这个代码:
let want: Want = {
action: 'ohos.want.action.viewData',
uri: fileUri.getUriFromPath(filePath) ,
flags:wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION
};
context.startAbility(want)
.then((result)=>{
}).catch((err: BusinessError) => {
})
如果手机里没有对应的应用,会显示“暂无支持此类文件的应用”,现在想做成手机里没有对应的应用,调用如下分享代码:
let want: Want = {
action: 'ohos.want.action.viewData',
uri: fileUri.getUriFromPath(filePath) ,
flags:wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION
};
context.startAbility(want)
.then((result)=>{
console.log('')
}).catch((err: BusinessError) => {
//没有的话调用文件分享
let data: systemShare.SharedData = new systemShare.SharedData({
utd: utd.UniformDataType.FILE,
uri: fileUri.getUriFromPath(filePath)
});
let controller: systemShare.ShareController = new systemShare.ShareController(data);
let callback = () => {
console.info('Share panel closed');
};
controller.on('dismiss', callback);
controller.off('dismiss', callback);
// 获取UIAbility上下文对象
controller.show(context, {
previewMode: systemShare.SharePreviewMode.DETAIL,
selectionMode: systemShare.SelectionMode.SINGLE
});
})
但这样的话既会弹出分享的界面,在这个界面后边也会弹出“暂无支持此类文件的应用”,请问如何不显示“暂无支持此类文件的应用”弹框,或者将这两个功能集合在一起:在分享界面上展示能打开文件的应用。
文件分享也可以want。用法参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/share-app-file-V5
使用如下demo进行文件分享的操作,是会在分享界面展示能打开文件的应用,同时支持自定义的弹窗提示,弹窗可以自行关闭。
在分享时如果没有可支持打开该类型文件的应用时,会弹窗提示框"暂无支持此类文件的应用",可以通过canopenlink自己先判断一下,没有支持的应用时可以自己处理相关逻辑,文档链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bundlemanager-V5\#bundlemanagercanopenlink12