首页 鸿蒙 正文
  • 本文约1800字,阅读需9分钟
  • 100
  • 0

鸿蒙开发拨打电话-获取当前位置服务

温馨提示:本文最后更新于2024年10月20日 07:45,若内容或图片失效,请在下方留言或联系博主。

对于三方应用,开发者可以使用makeCall接口,拉起系统电话应用,用户可以自行呼出通话。

  1. 导入call和observer模块。

  2. 调用hasVoiceCapability,确认当前设备是否支持拨号。

  3. 调用makeCall接口,跳转到拨号界面并显示待拨号的号码。

1. 调用拨打电话:拨打电话

 // import需要的模块
 import { call, observer } from '@kit.TelephonyKit';

// 呼叫联系人
  makeCall(phone: string) {
    // 分手机/平板/PC 有的不能拨号(判断是否插卡)
    // call.hasVoiceCapability() 判断当前设备是否支持拨号功能
    if (call.hasVoiceCapability()) {
      // 转到拨号页面 显示被叫号码 (第三方应用,只能跳转到拨号页面)
      call.makeCall(phone)
      promptAction.showToast({ message: '点击了紧急呼叫联系人,呼叫号码为:' + phone })
    } else {
      promptAction.showToast({ message: '该设备暂不支持' })
    }
  }
// 调用拨打
this.makeCall('10086')

2. 获取当前位置服务(获取位置授权-获取位置信息):位置服务

位置服务提供GNSS定位、网络定位(蜂窝基站、WLAN、蓝牙定位技术)、地理编码、逆地理编码、国家码和地理围栏等基本功能。

import { Permissions } from '@kit.AbilityKit';

import { promptAction } from '@kit.ArkUI';
import { permissionManager } from '.';
import { geoLocationManager } from '@kit.LocationKit';

// 位置权限申请
class LocationManager {
  private permissions: Permissions[] = [
    'ohos.permission.APPROXIMATELY_LOCATION', // 大概位置
    'ohos.permission.LOCATION',// 精确位置
  ]

  // 申请权限
  async requestPermissions() {
    try {
      // 申请权限
      await permissionManager.requestPermissions(this.permissions)
    } catch {
      promptAction.showDialog({
        alignment: DialogAlignment.Center,
        title: '温馨提示',
        message: '定位功能需要获取权限,请在系统设置中打开定位开关',
        buttons: [
          { text: '取消', color: $r('app.color.font_sub') },
          { text: '立即开启', color: $r('app.color.brand') }
        ]
      })
        .then((res) => {
          // 打开设置页
          if (res.index === 1) {
            permissionManager.openPermissionSettingsPage()
          }
        })
    }
  }

  // 获取当前位置
  async getCurrentAddress() {
    try {
      // 1. 获取定位信息(经纬度)
      const location = await geoLocationManager.getCurrentLocation()
      // 2.  根据地址 进行逆向解析
      // Windows 模拟器目前不支持调用 逆地理编码服务
      const geoAddress = await geoLocationManager.getAddressesFromLocation({
        locale: 'zh', // 返回结果 中英文
        latitude: location.latitude, // 经度
        longitude: location.longitude, // 纬度
        maxItems: 1
      })
      AlertDialog.show({ message: JSON.stringify(geoAddress, null, 2) })

    } catch (err) {
      // AlertDialog.show({ message: JSON.stringify(err, null, 2) })
    }
  }
}

export const locationManager = new LocationManager()
评论