16000001/2097152:指定的Ability名称不存在

通常为BMS包管理子系统的报错,hilog中此错误码向上几行即可看到C01120/BundleMgrService相关的报错信息。
排查思路:
进入shell,输入bm dump -a即可查询应用安装列表,如果传入want中的bundlename不在此结果中,即说明应用未安装成功。
进入shell,输入bm dump -n 包名即可查询对应应用的包信息。
如果在abilities/extensions的[]列表中,没有name值为传入want中abilityName的项目,即说明安装的应用中没有对应的ability。

16000004/2097179 可见性校验失败
拉起的ability在module.json5的exported属性为false,即不可被其他应用拉起。
如果确认要拉起的ability的exported为true,输入bm dump -n 包名即可查询对应应用的包信息。或输入hdc shell "bm dump -n 包名"重定向输出的包信息。
在abilities/extensions的列表中找到对应ability的visible字段,如果为false,即解析出的结果为不可见。
如果应用有需要拉起exported为false的ability,可以申请ohos.permission.START_INVISIBLE_ABILITY权限,即可拉起其他应用中exported属性为false的ability。

16000006/2097207 不允许跨用户操作
传入的userID不为当前激活的用户ID,排查接口传入的userID,或提供debug日志。
如果没有指定userID,则拉起的目标userID为发起方进程应用所属用户;如果此时发起方用户为 SA系统服务 或 安装在0用户下的应用,则默认会指定当前用户,通常不会触发这个错误码。

16200001/2097205 通用组件客户端(Caller)已回收
调用接口时的context对应的ability已被析构,请排查调用context.startAbility时的context是从哪里获取的,其对应的ability是否还在运行
如果连续调用startAbility和terminateSelf,可能自身先被析构,再走的startAbility流程,也会出现此错误码。请在收到startAbility成功/失败的回调后再terminateSelf

2097177 权限校验失败
权限校验失败,hilog日志中,找到错误码位置,向上数十行内会有提示校验权限失败。或者在ams接口文档中确认是否需要特定权限
一种常见的情况下是,当发起方为ExtensionAbility,或UIAbility处于后台状态,拉起其他ability需要ohos.permission.START_ABILITIES_FROM_BACKGROUND 权限,
如果日志中搜索有这个权限相关提示,即说明是发起方处于后台状态但没有权限
还有一种常见的情况,报错位置前有ShouldPreventStartAbility相关日志,则为发起方处于后台拉起Extension的场景。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐