HarmonyOS鸿蒙Next中Beta1升级到Beta5之后文件预览失败

HarmonyOS鸿蒙Next中Beta1升级到Beta5之后文件预览失败

使用Want隐式拉起引用打开文件,方法如下:

export function openFile(path: string, contentType?: string) {
  if (isEmpty(contentType)) {
    contentType = getContentType(path.substring(path.lastIndexOf('.')))
  }
  let uri = fileUri.getUriFromPath(path);
  let want: Want  = {
    // 配置文件的读写权限,例如对被分享应用进行读写授权
    flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
    // 配置应用的隐式拉起规则
    action: 'ohos.want.action.viewData',
    uri: uri,
    type: contentType
  }

  let context = getContext() as common.UIAbilityContext;
  context.startAbility(want)
    .then(() => {
      console.info('Invoke getCurrentBundleStats succeeded.');
    })
    .catch((err: BusinessError) => {
      shortToast("打开文件失败")
      Logger.error(TAG,`Invoke startAbility failed, code is ${err.code}, message is ${err.message}`);
    });
}

之前没问题,现在更新到Beta5之后,也没有报错,但是打开文件预览应用之后显示“预览失败”。


更多关于HarmonyOS鸿蒙Next中Beta1升级到Beta5之后文件预览失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

前几天可以正常预览,今天突然预览失败了,有提工单反馈这个问题的兄弟吗

更多关于HarmonyOS鸿蒙Next中Beta1升级到Beta5之后文件预览失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


试下这个看看

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 + '/1.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 + "/1.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: '1.txt',
  uri: uri,
  mimeType: 'text/plain' // 文件(夹)的媒体资源类型,如text/plain
};

@Entry
@Component
struct TxtPage {
  @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中,从Beta1升级到Beta5后出现文件预览失败的问题,可能是由于系统更新导致的兼容性或缓存问题。建议您尝试以下步骤解决:

  1. 清除应用缓存,重新启动设备;
  2. 检查文件格式是否被系统支持;
  3. 更新相关应用至最新版本;
  4. 如问题依旧,建议备份数据后恢复出厂设置。

如果问题持续,建议联系华为客服获取进一步的技术支持。

回到顶部