共享联系人信息到分享推荐区
=============

通过意图框架服务，目标应用可以将联系人信息共享到分享推荐区。参考：[习惯推荐-接入方案](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/intents-habit-rec-access-programme)。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/c/v3/hoZe0WtBS2uZUJk7dTDSPQ/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260709T132658Z&HW-CC-Expire=86400&HW-CC-Sign=142928D9538BD1E6313158465D165210FEE708169695790DA18B8B991DD7DEDE)

该示例代码无法直接运行，需要申请意图框架白名单。参见：[Intents Kit接入流程](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/intents-access-flow)。

#### 开发步骤

1.  导入相关模块。
    
    import BuildProfile from 'BuildProfile';
    import { util } from '@kit.ArkTS';
    import { BusinessError } from '@kit.BasicServicesKit';
    import { insightIntent } from '@kit.IntentsKit';
    
2.  目标应用构造联系人数据。
    
    const intent: insightIntent.InsightIntent = {
      intentName: 'SendMessage', // 意图名
      intentVersion: '1.0', // 意图版本
      identifier: util.generateRandomUUID(), // 意图标识符
      intentActionInfo: { // 意图执行信息
        actionMode: 'EXECUTED', // 动作模式
        executedTimeSlots: { // 实际发生时间段
          executedStartTime: new Date().getTime(),
          executedEndTime: new Date().getTime(),
        }
      },
      intentEntityInfo: { // 意图实体信息
        entityId: 'this-is-id', // 实体Id
        entityName: 'Contact', // 实体名称
        name: 'Nickname', // 联系人昵称
        icon: 'data:image/png;base64,...', // 联系人头像
        phoneNumbers: \[\], // 联系人电话号码
        extras: {
          shareParams: {
            bundleName: BuildProfile.BUNDLE\_NAME, // 应用包名
            moduleName: 'entry', // 应用模块名 根据实际填写
            abilityName: 'SampleContactAbility', // 应用ability名 根据实际填写
            action: 'ohos.want.action.sendData', // 标识分享 不可修改
          }
        }
      }
    };
    
3.  目标应用共享联系人数据。
    
    let uiContext: UIContext = this.getUIContext();
    let context: Context = uiContext.getHostContext() as Context;
    insightIntent.shareIntent(context, \[intent\]).then(() => {
      console.info('shareIntent ok');
    }).catch((err: BusinessError) => {
      console.error(\`shareIntent failed. Code: ${err.code}. message: ${err.message}\`);
    });