uni-app编译成鸿蒙后使用@pura/harmony-utils插件拉起短信手机号码带不过来同样代码原生可以带过去

uni-app编译成鸿蒙后使用@pura/harmony-utils插件拉起短信手机号码带不过来同样代码原生可以带过去

开发环境 版本号 项目创建方式
Windows win11 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:win11

HBuilderX类型:正式

HBuilderX版本号:4.51

手机系统:HarmonyOS NEXT

手机系统版本号:HarmonyOS NEXT Developer Preview

手机厂商:华为

手机机型:mate 60 pro

页面类型:vue

vue版本:vue3

打包方式:云端

示例代码:

import { DeviceUtil, AppUtil, NotificationUtil, WantUtil, ToastUtil  } from '[@pura](/user/pura)/harmony-utils';  
// 打开短信  
export function openHmMMS (phone: string, name: string) : void {  
    console.log('打开的短信号码--------------------------->:', phone, name)  

    WantUtil.startMMS("13909626520", "张三").then(() => {  
        ToastUtil.showToast("拉起短信界面…")  
    }).catch((err: BusinessError) => {  
        console.log(JSON.stringify(err));  
        ToastUtil.showToast("拉起失败!");  
    });  
}
import { FileUtil, LogUtil, ToastUtil, WantUtil } from '[@pura](/user/pura)/harmony-utils';  
import { BusinessError } from '@kit.BasicServicesKit';  

@Entry  
@Component  
struct Index {  
  @State message: string = 'Hello World';  

  build() {  
    RelativeContainer() {  
      Button("startMMS()")  
        .btnStyle()  
        .onClick(() => {  
          WantUtil.startMMS("13909626520", "张三").then(() => {  
            ToastUtil.showToast("拉起短信界面…")  
          }).catch((err: BusinessError) => {  
            LogUtil.error(JSON.stringify(err));  
            ToastUtil.showToast("拉起失败!");  
          });  
        })  
    }  
    .height('100%')  
    .width('100%')  
  }  
}  

@Styles  
function btnStyle() {  
  .width('90%')  
  .margin({ top: 10, bottom: 5 })  
}

操作步骤:

点击按钮,打开短信APP,默认填上手机号码

预期结果:

点击按钮,打开短信APP,默认填上手机号码

实际结果:

uts插件开发后,打开手机号带不上去,鸿蒙原生可以带上去

bug描述:

uniapp编译成鸿蒙后,使用@pura/harmony-utils插件拉起短信,手机号码带不过来,同样代码原生可以带过去


更多关于uni-app编译成鸿蒙后使用@pura/harmony-utils插件拉起短信手机号码带不过来同样代码原生可以带过去的实战教程也可以访问 https://www.itying.com/category-93-b0.html

12 回复

你好,你可以检查一下,引入的三方包,是否正确引入了

更多关于uni-app编译成鸿蒙后使用@pura/harmony-utils插件拉起短信手机号码带不过来同样代码原生可以带过去的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


之前用鸿蒙的api,也是可以调起短信,手机号码没带过去……

还用这个包做了别的功能哩,别的功能跑着没问题

回复 19302com: 也是uts里面写的

回复 19302com: 手机号码带不过去是什么意思,传递参数吗?

回复 DCloud_UNI_yuhe: 这个不能加附件,我回复到下面了

回复 DCloud_UNI_yuhe: 大佬大佬,咋样,十万火急

就是正常打开短信后,把电话号码直接添加上;鸿蒙原生可以,但是uts做的是空的


uts 插件正常来说是和鸿蒙上调用是一样的,你这里可能是类型等问题导致,你可以把 uniapp 项目中的 unpackage/debug/app-harmony 这个文件夹导入 deveco 中,查看是否有相关问题

回复 DCloud_UNI_yuhe: 大佬,我试了下,直接把unpackage/debug/app-harmony 拿到鸿蒙编辑器,用按个编辑器运行entry,一样哩,手机号也是空

回复 DCloud_UNI_yuhe: 哥,好了,刚才我对比了一下原生和uni项目的依赖版本号"@pura/harmony-utils": “^1.2.5"的带不过去手机号,改成”@pura/harmony-utils": “^1.2.8”,就可以了,已经好了,感谢大佬帮忙排查

根据问题描述,这是uni-app编译鸿蒙后使用@pura/harmony-utils插件时出现的兼容性问题。以下是关键分析点:

  1. 原生鸿蒙代码能正常传递手机号,说明@pura/harmony-utils本身功能正常
  2. uni-app编译后的代码可能对参数传递处理存在差异

建议检查:

  • 确保编译后的HarmonyOS工程中正确包含了@pura/harmony-utils依赖
  • 查看编译后的WantUtil.startMMS调用参数是否被正确保留
  • 检查uni-app到鸿蒙的UTS转换层是否存在参数处理问题

临时解决方案:

  1. 尝试直接调用鸿蒙原生API:
import ability from '[@ohos](/user/ohos).app.ability.UIAbility'
const want = {
  bundleName: 'com.android.mms',
  abilityName: 'com.android.mms.ui.ConversationList',
  parameters: {
    phone: '13909626520',
    name: '张三'
  }
}
ability.startAbility(want)
回到顶部