请教一个鸿蒙开发中打开系统邮箱并且展示邮件地址的问题?

请教一个鸿蒙开发中打开系统邮箱并且展示邮件地址的问题?通过Want和context打开了系统邮箱,但是要发送的邮件地址,能通过哪个参数传过去(邮箱地址默认展示在打开的系统邮箱里,就像手机号,直接展示在拨打电话的页面),Want中的Uri还是其他参数,如何拼接?

阅读 691
1 个回答

可以通过拼接uri传递收件人,抄送人,内容等参数,关键代码参考如下:

mail({ subject= '', recipients=[], body='', ccRecipients=[], bccRecipients=[] }: mainOptions, callback: Function) { 
  let mailUri: string = ''; 
  mailUri += recipients?.join(',') || ''; 
  mailUri += '?cc=' + ccRecipients?.join(',') || ''; 
  mailUri += '&bcc=' + bccRecipients?.join(',') || ''; 
  mailUri += '&subject=' + subject; 
  mailUri += '&body=' + body; 
  Logger.info('mailUri ', mailUri, 'ccRecipients:' + ccRecipients, 'bccRecipients:' + bccRecipients); 
  this.startEmailApp(mailUri, callback); 
} 
 
startEmailApp = (mailUri, callback) => { 
  let want: Want = { 
    bundleName: 'com.huawei.hmos.email', 
    abilityName: 'EntryAbility', 
    moduleName: 'entry', 
    uri: 'mailto:' + mailUri, 
    action: 'ohos.want.action.viewData', 
  }; 
  Logger.info('want ', JSON.stringify(want)); 
  try { 
    this.ctx.uiAbilityContext.startAbility(want) 
      .then(() => { 
        Logger.info('startAbility success'); 
      }) 
      .catch((err: BusinessError) => { 
        Logger.info('startAbility error.', err.message); 
        callback(err.message); 
      }) 
  } catch (e) { 
    callback(e); 
    Logger.info('error:', e); 
  } 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进