如何拉起短信界面然后指定联系人?

如何拉起短信界面然后指定联系人?

HarmonyOS
2024-07-13 10:48:38
浏览
收藏 0
回答 2
回答 2
按赞同
/
按时间
鱼弦CTO
1

在 HarmonyOS 中,如果你想从应用程序中打开短信界面并指定联系人,可以使用 ​​Intent​​ 来实现这一操作。在 Java 和 JavaScript 项目中分别有不同的实现方式。

### 在 Java 项目中使用 Intent 打开短信界面

以下是一个简单的示例,展示了如何在 Java 项目中使用 ​​Intent​​ 打开短信界面并指定联系人:

import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.utils.net.Uri;

public class MainAbility extends Ability {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        
        // 创建 Intent 并设置 Action 为发送短信
        Intent smsIntent = new Intent();
        smsIntent.setAction("ohos.action.send_message");
        
        // 设置指定的电话号码
        Uri smsUri = Uri.parse("sms:1234567890");
        smsIntent.setUri(smsUri);

        // 启动短信界面
        startAbility(smsIntent);
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

### 在 JavaScript 项目中使用 router.push 方法

如果你正在开发一个基于 JavaScript 的 HarmonyOS 应用,可以使用 ​​router.push​​ 方法来打开短信界面并指定号码。

#### 示例代码:

import router from '@system.router';

export default {
  methods: {
    openSmsApp() {
      router.push({
        uri: 'sms:1234567890'
      });
    }
  }
};
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

然后,在布局文件中定义一个按钮来触发这个方法。

#### 布局文件 (.hml) 示例:

<!-- index.hml -->
<template>
  <div class="container">
    <button type="button" onclick="openSmsApp">Send SMS to 1234567890</button>
  </div>
</template>

<style>
  .container {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
  }
</style>

<script>
  export default {
    data: {},
    methods: {
      openSmsApp() {
        router.push({
          uri: 'sms:1234567890'
        });
      }
    }
  }
</script>
  • 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.

### 注意事项

  1. 配置权限:确保你的应用具有发送短信的权限。在 config.json 文件中进行配置:
{
  "module": {
    "features": [
      {"name": "ohos.permission.SEND_MESSAGES"}
    ]
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  1. 错误处理:建议对可能出现的错误进行处理,例如检查设备上是否支持发送短信,并在操作失败时给用户提供友好的提示。
  2. 防止误操作:为了防止意外发送信息,可以添加一个确认对话框,当用户点击按钮时,先弹出确认对话框,再跳转到短信界面。

### 添加确认对话框示例(JavaScript)

在 ​​.hml​​ 文件中添加对话框逻辑:

<!-- index.hml -->
<template>
  <div class="container">
    <button type="button" onclick="confirmSms">Send SMS to 1234567890</button>
    
    <dialog id="confirmDialog" title="Confirm SMS" buttons="[[buttons]]">
      Are you sure you want to send an SMS to 1234567890?
    </dialog>
  </div>
</template>

<style>
  .container {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
  }
</style>

<script>
  export default {
    data: {
      buttons: [
        { text: "Cancel", color: "#000000", click: "closeDialog" },
        { text: "Send", color: "#FF0000", click: "openSmsApp" }
      ]
    },
    methods: {
      confirmSms() {
        this.$element('confirmDialog').show();
      },
      closeDialog() {
        this.$element('confirmDialog').close();
      },
      openSmsApp() {
        this.$element('confirmDialog').close();
        router.push({
          uri: 'sms:1234567890'
        });
      }
    }
  }
</script>
  • 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.
  • 42.
  • 43.
  • 44.

通过以上方法,你可以在 HarmonyOS 中顺利地从应用程序跳转到短信界面并指定联系人。如果你有更多问题或需求,请随时提问。

分享
微博
QQ
微信
回复
2024-07-13 11:00:22
davis_li
import { common, Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
interface ModelContactInfo {
  contactsName: string;
  telephone: string;
}
function startMMSAbility(context: common.UIAbilityContext): void {
  let contactInfo: Array<ModelContactInfo> = [{
    contactsName: 'ZhangSan',
    telephone: '16888888888'
  }];
  let want: Want = {
    bundleName: 'com.ohos.mms',
    abilityName: 'com.ohos.mms.MainAbility',
    parameters: {
      contactObjects: JSON.stringify(contactInfo),
      pageFlag: 'conversation'
    }
  };
  context.startAbility(want).then(() => {
    console.info('Start MMSAbility successfully.');
  }).catch((err: BusinessError) => {
    console.error(`Failed to startAbility. Code: ${err.code}, message: ${err.message}`);
  });
}

@Entry
@Component
struct StartMMSAbilityView {
  @State message: string = '拉起短信界面并指定联系人';
  build() {
    Row() {
      Column() {
        Button(this.message)
          .fontSize(24)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
            startMMSAbility(context);
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
  • 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.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
分享
微博
QQ
微信
回复
2024-07-13 17:01:35
相关问题
如何拉起短信界面指定联系人
2901浏览 • 1回复 待解决
HarmonyOS 根据id查询联系人报错
810浏览 • 1回复 待解决
鸿蒙系统-代码如何实现添加联系人
12232浏览 • 1回复 待解决
HarmonyOS 联系人读取报201权限错误
767浏览 • 1回复 待解决
HarmonyOS 添加联系人到通讯录没反应
1014浏览 • 1回复 待解决
如何拉起拨号界面指定号码
2898浏览 • 1回复 待解决
如何拉起拨号界面以及指定号码?
1881浏览 • 2回复 待解决
HarmonyOS 拉起短信页面
1177浏览 • 1回复 待解决
鸿蒙系统-如何拉取联系人设置页面
20470浏览 • 1回复 待解决
HarmonyOS 如何跳转到系统发短信界面?
1093浏览 • 1回复 待解决
如何拉起应用市场界面
3723浏览 • 1回复 待解决
三方应用可以读取联系人数据吗?
1054浏览 • 1回复 待解决
如何拉起设置app的常用界面
1594浏览 • 2回复 待解决
如何拉起设置应用的主界面
1320浏览 • 2回复 待解决