首页
社区
课程
招聘
[原创]【FAQ】HarmonyOS SDK 闭源开放能力 —Share Kit
发表于: 2024-11-18 10:56 2810

[原创]【FAQ】HarmonyOS SDK 闭源开放能力 —Share Kit

2024-11-18 10:56
2810

1.问题描述:

使用系统分享组件分享本地文件,点击分享菜单下方的“另存为” 将要分享的文件分享至系统文件管理中,在文件管理中查看分享进来的文件为0B。尝试了3种uri的写法都不行,代码如下:

1
2
3
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拼接应该是:

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

或通过getUriFromPath将沙箱路径转成uri:

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

2.问题描述:

文档d10K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3k6r3!0U0i4K6u0r3K9r3q4J5L8h3!0F1P5h3!0K6i4K6u0V1M7X3g2X3k6i4u0W2L8X3y4W2M7#2)9J5k6q4j5#2i4K6u0r3M7$3S2S2M7X3g2Q4x3X3c8K6P5i4y4@1k6h3#2Q4x3X3c8K6K9r3q4J5k6g2)9J5k6q4j5#2i4K6t1K6M7$3g2U0N6r3W2G2L8U0t1H3y4U0V1$3y4o6R3K6z5o6p5K6 SharedRecord uri是否支持http链接?

解决方案:

haredRecord uri支持http链接。

3.问题描述:

调用系统分享图片或file,点击系统分享面板的保存按钮,提示保存失败。

demo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
 
    })

解决方案:

目前已知的失败场景,可能是因为文件名含有媒体库命名不支持的符号导致。在图库重命名,加个. / 这些符号,就能看到相关提示,所有不支持的字符都会列出来;

我们这边测试中文是正常,如果反馈中文有问题,麻烦提供一下日志,或者其他能帮助我们查问题的信息,联系方式758K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3M7%4g2H3M7r3!0J5N6q4)9J5c8X3k6W2k6h3c8T1j5h3y4C8i4K6u0r3i4K6t1K6i4K6u0r3i4K6y4r3k6X3g2W2k6r3u0S2j5$3E0U0K9r3q4F1L8X3g2D9i4K6y4p5f1q4m8e0c8o6l9H3x3o6p5`.

4.问题描述:

如何实现应用分享到微信,以卡片形式显示,点击可以打开具体链接页面?

解决方案:

Share Kit提供了两个能力,分别是:宿主应用发起分享 和 目标应用处理分享内容:

其中宿主应用发起分享,可以拉起Share Kit的分享面板;目标应用处理分享内容,可以处理收到的分享信息。

具体的显示效果是由接入方根据sharedata数据格式解析显示最终卡片效果。

5.问题描述:

App需要使用文件分享相关功能,uris是必须配置的,若删除相关配置,则App无法接收消息,请问应该怎么处理。

解决方案:

1、uris和action可以同时存在。不过 actions和uris不能在同一个对象中,需要在不同的对象中才可以。

2、以首页的skills为例,下方的skills配置是可以正常收到消息的 且点击也没有问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
“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”
 
      }
 
    ]
 
  }
 
]

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回