【FAQ】HarmonyOS SDK 閉源開放能力 —Share Kit

HarmonyOS_SDK發表於2024-11-18

1.問題描述:

使用系統分享元件分享本地檔案,點選分享選單下方的“另存為” 將要分享的檔案分享至系統檔案管理中,在檔案管理中檢視分享進來的檔案為0B。嘗試了3種uri的寫法都不行,程式碼如下:

const uri = getContext().getApplicationContext().filesDir + '/xxx.json'
const uri1 = 'file://' + getContext().getApplicationContext().filesDir + '/xxx.json'
const uri2 = 'file://' + getContext().applicationInfo.name + '/' + getContext().getApplicationContext().filesDir + '/xxx.json'

解決方案:

正確的uri拼接應該是:

const uri = 'file://' + getContext().applicationInfo.name + getContext().getApplicationContext().filesDir + '/xxx.json';

或透過getUriFromPath將沙箱路徑轉成uri:

let pathInSandbox = 'getContext().getApplicationContext().filesDir + '/xxx.json';
let uri = fileUri.getUriFromPath(pathInSandbox);

2.問題描述:

文件https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/share-system-share-V5#section20696483813 SharedRecord uri是否支援http連結?

解決方案:

haredRecord uri支援http連結。

3.問題描述:

呼叫系統分享圖片或file,點選系統分享皮膚的儲存按鈕,提示儲存失敗。

demo:

const data = new systemShare.SharedData({

      utd: uniformTypeDescriptor.UniformDataType.IMAGE,

      uri: fileUri.getUriFromPath(path)

    })

    const controller = new systemShare.ShareController(data)

    const context = GlobalContext.get().getApp() as common.UIAbilityContext

    controller.show(context, {

      selectionMode: systemShare.SelectionMode.BATCH,

      previewMode: systemShare.SharePreviewMode.DETAIL

    })

解決方案:

目前已知的失敗場景,可能是因為檔名含有媒體庫命名不支援的符號導致。在相簿重新命名,加個. / 這些符號,就能看到相關提示,所有不支援的字元都會列出來;

我們這邊測試中文是正常,如果反饋中文有問題,麻煩提供一下日誌,或者其他能幫助我們查問題的資訊,聯絡方式https://developer.huawei.com/consumer/cn/support/feedback/#/?feedbackchannel=PPSD0001

4.問題描述:

如何實現應用分享到微信,以卡片形式顯示,點選可以開啟具體連結頁面?

解決方案:

Share Kit提供了兩個能力,分別是:宿主應用發起分享 和 目標應用處理分享內容:

其中宿主應用發起分享,可以拉起Share Kit的分享皮膚;目標應用處理分享內容,可以處理收到的分享資訊。

具體的顯示效果是由接入方根據sharedata資料格式解析顯示最終卡片效果。

5.問題描述:

App需要使用檔案分享相關功能,uris是必須配置的,若刪除相關配置,則App無法接收訊息,請問應該怎麼處理。

解決方案:

1、uris和action可以同時存在。不過 actions和uris不能在同一個物件中,需要在不同的物件中才可以。

2、以首頁的skills為例,下方的skills配置是可以正常收到訊息的 且點選也沒有問題:

“skills”: [

    {

“entities”: [

“entity.system.home”

      ],

“actions”: [

“action.system.home”,

“action.ohos.push.listener”,

      ]

    },

    {

“uris”: [

        {

“scheme”: “https”,

“port”:“8080”,

“host”: “com.xx.pushsvc.impl”,

“path”: “notify_detai”

      }

    ]

  }

]

相關文章