Skip to content

Latest commit

 

History

History
60 lines (35 loc) · 2.84 KB

Q&A.md

File metadata and controls

60 lines (35 loc) · 2.84 KB

常见问题

  • 运行demo时调用ComponentB无效

  • 无法调用到组件

      1. 请按照本文档的集成说明排查
      2. 请确认调用的组件名称(CC.obtainBuilder(componentName)与组件类定定义的名称(getName()的返回值)是否一致
      3. 请确认actionName是否与组件中定义的一致
      4. 开发阶段,若跨app调用失败(错误码: -5),可在application.onCreate中显式地调用CC.enableRemoteCC(true);
    
  • 调用异步实现的组件时,IComponentCallback.onResult方法没有执行

      1. 请检查组件实现的代码中是否每个逻辑分支是否最终都会调用CC.sendCCResult(...)方法
          包括if-else/try-catch/switch-case/按返回键或主动调用finish()等情况
      2. 请检查组件实现的代码中该action分支是否返回为true 
          返回值的意义在于告诉CC引擎:调用结果是否异步发送(执行CC.sendCCResult(...)方法)
    
  • 跨app调用组件时,onCall方法执行到了startActivity,但页面没打开

      1. 请在手机系统的权限管理中对组件所在的app赋予自启动权限
      2. 请检查被调用的app里是否设置了CC.enableRemoteCC(false),应该设置为true(默认值也为true)
    
  • 使用ActionProcessor来处理多个action,单独组件作为apk运行时能正常工作,打包到主app中则不能正常工作

    //使用自定义的cc-settings.gradle文件时,主工程也要依赖此gradle文件替换
    apply from: 'https://raw.githubusercontent.com/luckybilly/CC/master/cc-settings.gradle'

    参考demo/build.gradle中的配置

  • 使用自定义权限后,不能正常进行跨app调用

      每个组件都必须依赖自定义权限的module
      若对该module的依赖在自定义cc-settings.gradle中,则每个组件都要apply这个gradle
    

参考demo/build.gradle中的配置

  • 如何实现context.startActivityForResult的功能

      1. 使用方式同普通页面跳转
      2. 在onCall方法里返回true
      3. 在跳转的Activity中回调信息时,不用setResult, 通过CC.sendCCResult(callId, result)来回调结果
      4. 调用组件时,使用cc.callAsyncCallbackOnMainThread(new IComponentCallback(){...})来接收返回结果
    
  • ComponentName和ActionName这些常量字符串如何管理

      建议采用以下2种方式中的一种来进行管理:
      1. 每个组件内部维护一个常量类,将组件自己的ComponentName、ActionName及用到的其它组件的字符串统一管理
      2. 创建一个公共module,为每个组件创建一个常量类,包含对应组件的名称及action字符串