鸿蒙应用示例:API功能集成示例及注意事项

【demo源码】:https://gitcode.com/zhongcongxu01/harmony_demo/overview

这个示例应用展示了如何集成以下功能:

  1. 获取设备的AAID(应用唯一标识符)。
  2. 启动短信应用并预填联系人信息。
  3. 启动浏览器并加载指定网页。
  4. 启动应用市场中的应用详情页面。
  5. 启动设备的设置界面(如WLAN设置、输入法设置等)。
  6. 拨打电话。
  7. 启动扫码界面。
  8. 检测指定应用是否已安装。
  9. 获取当前应用的信息。
  10. 获取设备的基本信息。
  11. 开启或关闭窗口隐私模式(防截屏录屏)。
  12. 监听网络连接状态。
  13. 获取当前设备的网络连接属性(如IP地址)。
  14. 启动相机选择器。
  15. 从相册选择图片。
  16. 设置应用的屏幕方向(竖屏或横屏)。
  17. 检测当前应用的屏幕方向。
  18. 获取当前设备类型。

【注意事项】

1、设备唯一标识 AAID(应用匿名标识符)

• 实测结果:当用户主动卸载应用后重新安装时,AAID值会发生变化。
• 建议:如果希望卸载应用后仍保持唯一标识符不变,可以考虑使用第三方库如harmony-utils来实现这一功能。

2、开启或关闭窗口隐私模式(防截屏录屏)

• 防截屏效果:当用户尝试截屏时,会有提示“当前页面涉及隐私内容,不允许截屏”。
• 防录屏效果:当设置防截屏录屏后,录屏时涉及到设置防录屏的页面将显示为黑屏,从而达到防录屏的效果。

3、判断API是否可用,使用canIUse方法的场景

在开发过程中,经常会出现以下警告:

The API is not supported on all devices. Use the canIUse condition to determine whether the API is supported.

这通常出现在某些API文档或IDE的提示信息中,表明该API并不是所有设备都支持。此时,我们需要使用canIUse方法来动态判断当前设备是否支持该API。

具体操作步骤如下:

(1). 查看API文档:首先查看API文档,确定该API是否支持所有设备。
(2). IDE提示信息:在IDE中编写代码时,如果IDE提示“该API不是所有设备都支持”,则需要使用canIUse方法。
(3). 查找@syscap值:在API文档中查找对应的@syscap值,例如SystemCapability.Window.SessionManager。
(4). 编写条件判断:在代码中使用canIUse方法,传入找到的@syscap值来判断当前设备是否支持该API。

示例代码: 假设我们要使用call.makeCall方法拨打电话,但在某些设备上可能不支持该功能,那么我们可以这样写

if (canIUse('SystemCapability.Telephony.Call')) {
  call.makeCall("13800000000", (err: BusinessError) => {
    if (err) {
      console.error(`makeCall fail, err->${JSON.stringify(err)}`);
    } else {
      console.log(`makeCall success`);
    }
  });
} else {
  promptAction.showToast({
    message: `当前设备不支持拨打电话功能`,
    duration: 2000,
    bottom: '500lpx'
  });
}

在这个例子中,SystemCapability.Telephony.Call是拨打电话功能所需的系统能力。通过canIUse方法判断当前设备是否支持该能力,从而决定是否调用call.makeCall方法。

4、核心代码

import { bundleManager, common, Want } from '@kit.AbilityKit';
import { BusinessError, deviceInfo } from '@kit.BasicServicesKit';
import { call } from '@kit.TelephonyKit';
import { scanBarcode, scanCore } from '@kit.ScanKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { promptAction, window } from '@kit.ArkUI';
import { connection } from '@kit.NetworkKit';
import { camera, cameraPicker } from '@kit.CameraKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { resourceManager } from '@kit.LocalizationKit';
import { AAID } from '@kit.PushKit';

function getMmsWant() {
  let want: Want = {
    bundleName: 'com.ohos.mms',
    abilityName: 'com.ohos.mms.MainAbility',
    parameters: {
      contactObjects: JSON.stringify([{ "contactsName": 'ZhangSan', "telephone": "16888880000" }]),
      content: "短信内容测试321",
      pageFlag: 'conversation'
    }
  };
  return want
}

function getBrowsableWant() {
  let want: Want = {
    action: 'ohos.want.action.viewData',
    entities: ['entity.system.browsable'],
    uri: 'https://www.huawei.com'
  };
  return want
}

function getAppGalleryDetailWant() {
  let bundleName = "com.amap.hmapp"
  let want: Want = {
    action: 'ohos.want.action.appdetail',
    uri: 'store://appgallery.huawei.com/app/detail?id=' + bundleName, //  bundleName为需要打开应用详情的应用的包名
  };
  return want
}

function getWifiEntryWant() {
  let want: Want = {
    bundleName: 'com.huawei.hmos.settings',
    abilityName: 'com.huawei.hmos.settings.MainAbility',
    uri: 'wifi_entry'  // 根据”设置”应用配置的界面信息,选择不同的uri
  };
  return want
}


function getSetInputWant() {
  let want: Want = {
    bundleName: 'com.huawei.hmos.settings',
    abilityName: 'com.huawei.hmos.settings
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值