• Lv0
    粉丝0

积分9 / 贡献0

提问2答案被采纳0文章0

调用用户管理授权模块时,报获取分布式库管理器服务失败

哄哄 显示全部楼层 发表于 2025-1-11 11:49:59

【问题描述】

  1. 介绍问题现象和发生的背景 调用系统接口osAccount registerInputer时,报错,查看系统日志显示

    C02404/PIN_AUTH_SDK: [GetProxy@pinauth_register_impl.cpp:78] get distributed gallery manager service fail

    C02404/PIN_AUTH_SDK: [RegisterInputer@pinauth_register_impl.cpp:44] get proxy failed

  2. 相关的代码(请勿使用截图)

    sptr<PinAuthInterface> PinAuthRegisterImpl::GetProxy()
    {
        IAM_LOGI("start");
        if (proxy_ != nullptr) {
            return proxy_;
        }
        sptr<ISystemAbilityManager> sam = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
        if (sam == nullptr) {
            IAM_LOGE("get system ability manager fail");
            return nullptr;
        }
        sptr<IRemoteObject> obj = sam->CheckSystemAbility(SUBSYS_USERIAM_SYS_ABILITY_PINAUTH);
        if (obj == nullptr) {
            IAM_LOGE("get distributed gallery manager service fail");
            return nullptr;
        }
        sptr<IRemoteObject::DeathRecipient> dr(new (std::nothrow) PinAuthDeathRecipient());
        if ((obj->IsProxyObject()) && (!obj->AddDeathRecipient(dr))) {
            IAM_LOGE("add death recipient fail");
            return nullptr;
        }
    
        proxy_ = iface_cast<PinAuthInterface>(obj);
        deathRecipient_ = dr;
        IAM_LOGI("succeed to connect distributed gallery manager service");
        return proxy_;
    }
    this.pinAuth.registerInputer({
            onGetData: (authSubType, inputData) => {
              let u8aPwd = this.encodeToU8A(this.password);
              LogUtil.info(`${this.TAG} before set data, type: ${this.pinSubType}. authSubType: ${authSubType}`);
              inputData.onSetData(this.pinSubType, u8aPwd);
            }
          });
  3. 运行结果、错误截图

    A00500/[Settings]: Settings PasswordModel#registerInputer failed, error:{"code":201}}

    通过查看系统源码发现 SUBSYS_USERIAM_SYS_ABILITY_PINAUTH没有这个系统能力

  4. 我尝试过的解决方法和结果

    在moudule.json中已经对接口权限申请

    "name": "ohos.permission.ACCESS_PIN_AUTH",
  5. 我想要达到的结果

【运行环境】

硬件:loongson 3a6000 ROM版本: DevEvoStudio版本:5.0.3.910 SDK版本:Ohos_sdk_public 5.0.0.71

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论3

kuaile

沙发 发表于 2025-1-15 10:28:54
pls
1、为啥用到了c++接口,什么场景要这么使用
2、获取分布式数据管理服务的code是DISTRIBUTED_KV_DATA_SERVICE_ABILITY_ID,而不是SUBSYS_USERIAM_SYS_ABILITY_PINAUTH

哄哄

发表于 2025-1-16 09:44  IP属地: 江苏省淮安市

回复 kuaile: 我现在用的是账号管理模块调用系统接口函数registerInputer ,上面贴的代码是我查询系统源码时找到的调用系统接口时报的错误,我用的也是系统提供的JS接口没有自己用C++实现,我不太清楚账号管理模块报错信息和分布式管理服务有什么关系。我看了深开鸿王石的帖子,可能是系统镜像没有集成selinux的问题。https://forums.openharmony.cn/fo ... &page=1#pid9965

【1 条回复】

kuaile

板凳 发表于 2025-1-15 11:22:46
为啥用到了c++接口,最好能用js

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部