HarmonyOS原子化服务开发实战-华为分享 原创

鸿蒙时代
发布于 2021-12-8 11:06
浏览
0收藏

1、集成IDL接口
在“java”目录同级目录创建“idl”接口目录(可手动添加或通过DevEco Studio创建):com/huawei/hwshare/third(固定路径),然后创建名为IHwShareCallback.idl和IHwShareService.idl的IDL文件。

interface com.huawei.hwshare.third.IHwShareCallback {
    [oneway] void notifyState([in] int state);
}

IHwShareService.idl :
sequenceable ohos.interwork.utils.PacMapEx;
interface com.huawei.hwshare.third.IHwShareCallback;

interface com.huawei.hwshare.third.IHwShareService {
    int startAuth([in] String appId, [in] IHwShareCallback callback);
    int shareFaInfo([in] PacMapEx pacMapEx);
}

注意:IDL接口路径不能修改否则会报错。
HarmonyOS原子化服务开发实战-华为分享-鸿蒙开发者社区
执行相应上图所示的指令生成相应文件。
HarmonyOS原子化服务开发实战-华为分享-鸿蒙开发者社区
2、根据官网编写逻辑
按照官网的流程创建ShareFaManager类,用于管理分享方与华为分享的连接通道和数据交互。
3、引用
在相应的位置上调用接口。

        byte[] bytes;
        InputStream inputStream = null;
        try {
            inputStream = getContext().getResourceManager().getResource(ResourceTable.Media_show);
            bytes = readInputStream(inputStream);
            PacMapEx pacMap = new PacMapEx();
            pacMap.putObjectValue(ShareFaManager.SHARING_FA_TYPE, 0);  //分享的服务类型
            pacMap.putObjectValue(ShareFaManager.HM_BUNDLE_NAME, getBundleName());
            pacMap.putObjectValue(ShareFaManager.SHARING_EXTRA_INFO, getSQLParam().toString());  //携带的额外信息,可传递到被拉起的服务界面

            pacMap.putObjectValue(ShareFaManager.HM_ABILITY_NAME, PersonalAbility.class.getName());  //分享的服务的Ability类名

            pacMap.putObjectValue(ShareFaManager.SHARING_CONTENT_INFO, "欢迎使用原卡秀原子化服务卡片!");  //卡片展示的服务介绍信息

            pacMap.putObjectValue(ShareFaManager.SHARING_THUMB_DATA, bytes);  //卡片展示服务介绍图片
//
            inputStream = getContext().getResourceManager().getResource(ResourceTable.Media_icon);
            bytes = readInputStream(inputStream);
            pacMap.putObjectValue(ShareFaManager.HM_FA_ICON, bytes);  //服务图标,如果不传递此参数,取分享方默认服务图标

            pacMap.putObjectValue(ShareFaManager.HM_FA_NAME, "原卡秀");   //卡片展示的服务名称
            // 第一个参数为appid,在华为AGC创建原子化服务时自动生成。
            ShareFaManager.getInstance(this).shareFaInfo("765710042858007296", pacMap);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (NotExistException e) {
            e.printStackTrace();
        }
    }

bytes必须是byte[]类型,否则会报参数错误。


    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    byte[] buffer = new byte[1024];

    int length = -1;

    try {
        while ((length = inputStream.read(buffer)) != -1) {
            baos.write(buffer, 0, length);
        }
        baos.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }

    byte[] data = baos.toByteArray();

    try {
        inputStream.close();
        baos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return data;

}

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
标签
HarmonyOS原子化服务开发实战-华为分享.docx 79.34K 14次下载
收藏
回复
举报
回复
    相关推荐