鸿蒙HarmonyOS开发:系统服务

拨打电话

call.makeCall

跳转到拨号界面,并显示待拨出的号码。使用callback异步回调。

javascript 复制代码
makeCall(phoneNumber: string, callback: AsyncCallback<void>): void
javascript 复制代码
import { call } from '@kit.TelephonyKit';

import { BusinessError } from '@kit.BasicServicesKit';

call.makeCall("138xxxxxxxx", (err: BusinessError) => {
    if (err) {
        console.error(`makeCall fail, err->${JSON.stringify(err)}`);
    } else {
        console.log(`makeCall success`);
    }
});
javascript 复制代码
import { BusinessError } from '@kit.BasicServicesKit';

call.makeCall("138xxxxxxxx").then(() => {
    console.log(`makeCall success`);
}).catch((err: BusinessError) => {
    console.error(`makeCall fail, promise: err->${JSON.stringify(err)}`);
});

网络搜索

需要权限:ohos.permission.GET_NETWORK_INFO

javascript 复制代码
import { radio } from '@kit.TelephonyKit';
javascript 复制代码
radio.getSignalInformationSync

获取指定SIM卡槽对应的注册网络信号强度信息列表。

卡槽ID。

  • 0:卡槽1
  • 1:卡槽2
javascript 复制代码
let slotId: number = 0;
let signalInfo: Array<radio.SignalInformation> = radio.getSignalInformationSync(slotId);
console.log(`signal information size is:` + signalInfo.length);

联系人

提供联系人管理能力,包括添加联系人、删除联系人、更新联系人等。

javascript 复制代码
import { contact } from '@kit.ContactsKit';

需要权限:ohos.permission.WRITE_CONTACTS

添加联系人,使用Promise方式作为异步方法。

javascript 复制代码
addContact(context: Context, contact: Contact): Promise<number>
javascript 复制代码
  import { BusinessError } from '@kit.BasicServicesKit';
  // 获取context
  let context = getContext(this) as Context;
  let promise = contact.addContact(
    context,
    {name: {fullName: 'xxx'},
      phoneNumbers: [{phoneNumber: '138xxxxxxxx'}]
  });
  promise.then((data) => {
    console.log(`addContact success: data->${JSON.stringify(data)}`);
  }).catch((err: BusinessError) => {
    console.error(`addContact fail: err->${JSON.stringify(err)}`);
  });

删除联系人,使用Promise方式作为异步方法。

javascript 复制代码
deleteContact(context: Context, key: string): Promise<void>
javascript 复制代码
import { BusinessError } from '@kit.BasicServicesKit';
// 获取context
let context = getContext(this) as Context;
let promise = contact.deleteContact(context, 'xxx');
promise.then(() => {
    console.log(`deleteContact success`);
}).catch((err: BusinessError) => {
    console.error(`deleteContact fail: err->${JSON.stringify(err)}`);
});

位置服务

javascript 复制代码
import { geoLocationManager } from '@kit.LocationKit';

获取当前位置,使用Promise异步回调。

javascript 复制代码
getCurrentLocation(request?: CurrentLocationRequest | SingleLocationRequest): Promise<Location>

调用逆地理编码服务,将坐标转换为地理描述,使用Promise异步回调。

javascript 复制代码
getAddressesFromLocation(request: ReverseGeoCodeRequest): Promise<Array<GeoAddress>>;
javascript 复制代码
import { geoLocationManager } from '@kit.LocationKit';
import { BusinessError } from '@kit.BasicServicesKit'
let reverseGeocodeRequest:geoLocationManager.ReverseGeoCodeRequest = {"latitude": 31.12, "longitude": 121.11, "maxItems": 1};
try {
    geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest).then((data) => {
        console.log('getAddressesFromLocation: ' + JSON.stringify(data));
    })
    .catch((error:BusinessError) => {
        console.error('promise, getAddressesFromLocation: error=' + JSON.stringify(error));
    });
} catch (err) {
    console.error("errCode:" + JSON.stringify(err));
}

获取上一次位置。

javascript 复制代码
import { geoLocationManager } from '@kit.LocationKit';
try {
    let location = geoLocationManager.getLastLocation();
} catch (err) {
    console.error("errCode:" + JSON.stringify(err));
}

监听位置

javascript 复制代码
async aboutToAppear(){
 let status = await this.reqPermissionsFromUser(["ohos.permission.LOCATION","ohos.permission.APPROXIMATELY_LOCATION"])
if(status){
geoLocationManager.on("locationChange",{
priority:LocationRequestScenario.NAVIGATION,
timeInterval:1
},value=>{
console.log(JSON.stringify(value))
})
}
}

取消监听

javascript 复制代码
aboutToDisappear(){
geoLocationManager.off("locationChange")
}

拉起弹框请求用户授权

javascript 复制代码
requestPermissionsFromUser(context: Context, permissionList: Array<Permissions>): Promise<PermissionRequestResult>

用于UIAbility拉起弹框请求用户授权。使用promise异步回调。

如果用户拒绝授权,将无法再次拉起弹框,需要用户在系统应用"设置"的界面中,手动授予权限。

javascript 复制代码
import abilityAccessCtrl, { Context, PermissionRequestResult } from '@ohos.abilityAccessCtrl';
import { BusinessError } from '@ohos.base';
import common from '@ohos.app.ability.common';

let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let context: Context = getContext(this) as common.UIAbilityContext;
atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA']).then((data: PermissionRequestResult) => {
  console.info('data:' + JSON.stringify(data));
  console.info('data permissions:' + data.permissions);
  console.info('data authResults:' + data.authResults);
  console.info('data dialogShownResults:' + data.dialogShownResults);
}).catch((err: BusinessError) => {
  console.error('data:' + JSON.stringify(err));
});
相关推荐
万少2 小时前
告别素材焦虑!用 AI 一键生成鸿蒙项目图片素材
ai编程·harmonyos
wszy18093 小时前
外部链接跳转:从 App 打开浏览器的正确姿势
java·javascript·react native·react.js·harmonyos
奋斗的小青年!!5 小时前
OpenHarmony Flutter 拖拽排序组件性能优化与跨平台适配指南
flutter·harmonyos·鸿蒙
sinat_384241096 小时前
HarmonyOS应用开发的trae cn全面实战指南
华为·harmonyos
小雨下雨的雨7 小时前
Flutter 框架跨平台鸿蒙开发 —— Stack 控件之三维层叠艺术
flutter·华为·harmonyos
行者967 小时前
OpenHarmony平台Flutter手风琴菜单组件的跨平台适配实践
flutter·harmonyos·鸿蒙
Van_Moonlight8 小时前
RN for OpenHarmony 实战 TodoList 项目:已完成未完成数量显示
javascript·开源·harmonyos
陈_杨8 小时前
前端成功转鸿蒙开发者真实案例,教大家如何开发鸿蒙APP--ArkTS 卡片开发完全指南
前端·harmonyos
陈_杨8 小时前
前端成功转鸿蒙开发者真实案例,教大家如何开发鸿蒙APP--ArkTS 卡片刷新机制
前端·harmonyos
哈__9 小时前
从入门小白到精通,玩转 React Native 鸿蒙跨平台开发:TouchableOpacity 触摸反馈组件
react native·react.js·harmonyos