
【demo源码】:https://gitcode.com/zhongcongxu01/harmony_demo/overview
这个示例应用展示了如何集成以下功能:
- 获取设备的AAID(应用唯一标识符)。
- 启动短信应用并预填联系人信息。
- 启动浏览器并加载指定网页。
- 启动应用市场中的应用详情页面。
- 启动设备的设置界面(如WLAN设置、输入法设置等)。
- 拨打电话。
- 启动扫码界面。
- 检测指定应用是否已安装。
- 获取当前应用的信息。
- 获取设备的基本信息。
- 开启或关闭窗口隐私模式(防截屏录屏)。
- 监听网络连接状态。
- 获取当前设备的网络连接属性(如IP地址)。
- 启动相机选择器。
- 从相册选择图片。
- 设置应用的屏幕方向(竖屏或横屏)。
- 检测当前应用的屏幕方向。
- 获取当前设备类型。
【注意事项】
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

最低0.47元/天 解锁文章
1387

被折叠的 条评论
为什么被折叠?



