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:如下
-
查看设备上应用的debug配置,如下图所示:
-
检查当前应用代码工程对应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的接口获取资源。
更多详情查看:文档中心