【HarmonyOS NEXT】FAQ之应用框架(程序框架4)

1、如何判断应用可被卸载

A:两种方法

  • 使用bundleManager.getApplicationInfo获取applicationInfo应用程序信息。

  • applicationInfo应用程序信息具有removable属性,可通过该属性判断应用是否可被卸载。

2、应用免安装的限制、字段解释以及如何自测

A:如下

  • 免安装限制:免安装HAP大小限制是10M。10M是针对所有要打进App的总大小,如果App内有多个HAP,是所有HAP加在一起。分包时,额外需要满足:每个文件的大小不能大于2M。

  • DeliveryWithInstall:配置应用的可选安装功能。具体场景是,在应用市场下载安装时是否跟随应用一起安装。Entry模块的本字段允许设置为false。配置为True的HAP包也会被计算在免安装的10M限制中。

  • InstallationFree:标识当前Module是否支持免安装特性。Entry模块也支持免安装,但当应用的Entry类型Module的该字段配置为true时,该应用的Feature类型的该字段也需要配置为true。

  • 自测:需要开发者自己写一个服务中心,mock一个服务中心处理免安装请求。

3、Stage模型与FA模型在进程内对象共享方面有哪些差异

A:Stage模型作为主推的应用模型,开发者通过它能够更加便利地开发出分布式场景下的复杂应用。

  • Stage模型中,多个应用组件共享同一个ArkTS引擎实例,因此在Stage模型中,应用组件之间可以方便的共享对象和状态,同时减少复杂应用运行对内存的占用。

  • FA模型中,每个应用组件独享一个ArkTS引擎实例。

4、如何实现通过调用其他已安装的应用来打开特定文件

A:开发者可以通过使用隐式Want机制来调用其他应用打开文件。通过设置合适的携带的数据(uri)、MIME type类型(type)、处理Want的方式(flag)等字段,以便系统能够识别并弹出一个选择框,让用户选择合适的应用来打开文件,效果示意如下图所示。

5、如何跳转通讯录 、 打电话

A:跳转拨号界面可以参考对应文档。参考文档:@ohos.telephony.call (拨打电话)

跳转通讯录可参考API:selectContacts

6、如何拉起短信界面并指定联系人

A:开发者可以通过显式指定bundleName为com.ohos.mms、abilityName为com.ohos.mms.MainAbility来拉起联系人应用,其中contactsName为用户名,telephone为电话号码。

7、如何拉起拨号界面并指定号码

A:开发者可以通过call.makeCall来拉起拨号界面。并在makeCall函数的第一个参数中指定电话号码,该功能代码在2in1设备中不可用。

8、如何拉起浏览器应用

A:开发者可以通过隐式指定want参数中的action为ohos.want.action.viewData来拉起浏览器应用,并在want参数中的uri配置拉起后打开的网页链接。

9、如何拉起应用市场界面

A:开发者可以通过隐式指定want参数中的action为ohos.want.action.appdetail并配置uri为store://appgallery.huawei.com来单独拉起应用市场应用。如需拉起应用市场中某个具体应用的详情页面,开发者需要向uri参数中拼接/app/detail?id=bundleName,其中bundleName为具体需要打开的应用包名,代码参考如下。

10、如何拉起相机界面

A:开发者可以通过cameraPicker拉起相机应用,该picker提供拍照与录制的能力,应用可以自行配置pick方法第二个参数选择媒体类型实现拍照和录制的功能,如以下代码中提供了拍照和录像的能力。

11、安装HAP包报“failed to install bundle. install debug type not same”错误

A:如下

  1. 查看设备上应用的debug配置,如下图所示:

    点击放大

  2. 检查当前应用代码工程对应module下的build-profile.json5文件中的debuggable字段配置(该字段可缺省,缺省值为false),和设备上本应用的debug配置是否一致,如果不一致,需要改为一致。

    点击放大

12、从一个UIAbility跳转到另外一个Ability时,是否支持自定义转场动画的设置?怎么实现

A:如下

  • UIAbility是任务,会在多任务界面显示一个卡片,为了动效一致性,不开放给开发者定制。

  • UIAbility不能用来组合应用内界面,用应用内导航组件Navigation来实现应用内的跳转。

13、应用级别的context和HSP级别的context冲突吗?HSP中不能通过getContext(this).resourceManager.getStringValue($r('app.string.test_string').id)的方式获取资源会报错,应该如何实现

A:不冲突,先通过getContext()获取当前上下文,再通过createModuleContext()获取HSP模块的上下文,再获取HSP模块的resourceManager,然后再调用resourceManager的接口获取资源。

更多详情查看:文档中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值