【FAQ】HarmonyOS SDK 閉源開放能力 — 公共模組

HarmonyOS_SDK發表於2024-11-25

1.問題描述:

文件哪裡能找到所有的許可權檢視該許可權是使用者級的還是系統級的。

解決方案:

您好,可以看一下下方連結是否可以解決問題:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...

2.問題描述:

查閱文件發現isApplicationEnabled方法已被棄用,目前如何判斷手機中某個應用是否已安裝?

解決方案:

應用是否已安裝?

目前判斷應用是否在手機安裝,在API 12之前並不支援。

在API 12之後,bundleManager支援canOpenLink介面,透過配置module.json5的querySchemes屬性,在程式碼中可以透過一下程式碼確定對應應用是否安裝:

參考連結:https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...

3.問題描述:

如何在程式碼中獲取oh-package.json5中的資訊,比如版本(version)或者描述(description)?

解決方案:

可以透過hvigor指令碼實現。

hvigor自定義任務指導:https://developer.harmonyos.com/cn/docs/documentation/doc-gui...

hvigor命令列指導:https://developer.harmonyos.com/cn/docs/documentation/doc-gui...

Demo: 這裡展示在har module的hvigorfile.ts檔案下,編寫指令碼程式碼,實現: 1.獲取並解析oh-package.json5中的內容 2.獲取har產物的路徑 3.修改har產物的名稱


import { harTasks } from '@ohos/hvigor-ohos-plugin';

import fs from 'fs'

interface OhPackage {

    name: string;

    version: number;

    description: string;

    author: string;

}

export function renameHarTask(str?: string) {

    return {

        pluginId: 'RenameHarTaskID',

        apply(pluginContext) {

            pluginContext.registerTask({

                // 編寫自定義任務

                name: 'renameHarTask',

                run: (taskContext) => {

                    //讀取oh-package.json5,解析出version

                    const packageFile = taskContext.modulePath+'\oh-package.json5';

                    console.log('file: ', packageFile);

                    let fileContent = fs.readFileSync(packageFile, 'utf8');

                    console.log(fileContent);

                    const content: OhPackage = JSON.parse(fileContent);

                    const version = content.version;

                    const author = content.author;

                console.log('renameHarTask: ', taskContext.moduleName, taskContext.modulePath);

                const sourceFile = taskContext.modulePath + '\\build\\default\\outputs\\default\\' + taskContext.moduleName + '.har';

                const targetFile = taskContext.modulePath + '\\build\\default\\outputs\\default\\'

                    + taskContext.moduleName + '-' + version + '-' + author +'.har';

                console.log('renameHarTask: sourceFile: ', sourceFile);

                console.log('renameHarTask: targetFile: ', targetFile);

                // 修改產物名

                fs.rename(sourceFile, targetFile, (err)=> {

                    console.log('err: ' + err);

                });

            },

            // 確認自定義任務插入位置

            dependencies: ['default@PackageHar'],

            postDependencies: ['assembleHar']

        })

    }

}


}

export default {

    system: harTasks,

    plugins:[renameHarTask()]

}

實現效果 在Terminal視窗執行: ./hvigorw renameHarTask 檢視build/default/outputs/default/下的har,可以看到,生成的har已經修改為了我們程式碼中指定的taskContext.moduleName + '-' + version + '-' + author +'.har'

4.問題描述:

編譯報錯:The default system capabilities of devices phone, tablet, 2in1 do not include SystemCapability.Communication.NFC.Tag. Configure the capabilities in syscap.json.

解決方案:

報錯提示是:不包括SystemCapability.Communication.NFC.Tag,需要syscap.json中配置。

可參考連結:https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...

相關文章