HarmonyOS鸿蒙Next中求解!如何在手机上点击 md 格式的文件默认用自己开发的软件打开

HarmonyOS鸿蒙Next中求解!如何在手机上点击 md 格式的文件默认用自己开发的软件打开 harmonyOS 上没有找到轻量好用的 md 文件预览如见,我自己开发一个足够轻量级的软件,但是打开 md 文件时,选择其他如见打开该文件,找不到自己的这个软件,这个是缺少了什么权限吗?

4 回复

目标方接入步骤

  1. 声明文件打开能力。

    支持打开文件的应用需要在module.json5配置文件中声明文件打开能力。其中uris字段表示接收URI的类型,其中scheme固定为file。type字段表示支持打开的文件类型(参见UTD类型(推荐)或MIME type类型),如下举例中类型为txt文件。

    {
    "module": {
        // ...
        "abilities": [
        {
            // ...
            "skills": [
            {
                "actions": [
                "ohos.want.action.viewData" // 必填,声明数据处理能力
                ],
                "uris": [
                {
                    // 允许打开uri中以file://协议开头标识的本地文件
                    "scheme": "file", // 必填,声明协议类型为文件
                    "type": "general.plain-text", // 必填,表示支持打开的文件类型
                    "linkFeature": "FileOpen" // 必填且大小写敏感,表示此URI的功能为文件打开
                }
                // ...
                ]
                // ...
            }
            ]
        }
        ]
    }
    }
    
  2. 应用处理待打开文件。

    声明了文件打开的应用在被拉起后,获取传入的Want参数信息,从中获取待打开文件的URI,在打开文件并获取对应的file对象后,可对文件进行读写操作。

    // xxx.ets
    import { fileIo } from '[@kit](/user/kit).CoreFileKit';
    import { Want, AbilityConstant, UIAbility } from '[@kit](/user/kit).AbilityKit';
    import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';
    export default class EntryAbility extends UIAbility {
        onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
            // 从want信息中获取uri字段
            let uri = want.uri;
            if (uri == null || uri == undefined) {
                console.info('uri is invalid');
                return;
            }
            try {
                // 根据待打开文件的URI进行相应操作。例如同步读写的方式打开URI获取file对象
                let file = fileIo.openSync(uri, fileIo.OpenMode.READ_WRITE);
                console.info('Succeed to open file.');
            } catch (err) {
                let error: BusinessError = err as BusinessError;
                console.error(`Failed to open file openSync, code: ${error.code}, message: ${error.message}`);
            }
        }
    }
    

详见开发文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/file-processing-apps-startup

更多关于HarmonyOS鸿蒙Next中求解!如何在手机上点击 md 格式的文件默认用自己开发的软件打开的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


就像这样,有没有大佬指点一下

在HarmonyOS Next中,需在module.json5skills中配置actions"ohos.want.action.viewData"uris设置scheme"file"type"text/markdown",或使用fileExtension指定".md"。同时确保应用声明了ohos.permission.READ_MEDIA等文件读取权限。系统将自动识别并默认调用你的应用打开.md文件。

在 HarmonyOS Next 中,要让自己的应用出现在系统文件打开方式列表中,需要在 module.json5 里为对应的 Ability 配置 skills 声明其支持的 Intent。关键在于添加 actions"ohos.want.action.viewData",并设置 urisschemehostpathPattern 来匹配文件扩展名,或通过 type 声明所支持的 MIME 类型(如 text/markdowntext/plain)。若不声明 MIME,系统可能无法正确识别。同时确保权限中已申请 ohos.permission.READ_MEDIAohos.permission.FILE_ACCESS_MANAGER 等读取权限,以便应用能访问用户选择的文件。完成这些配置并重新安装应用后,点击 md 文件时就会在打开方式列表中看到你的软件。

回到顶部