HarmonyOS鸿蒙Next中一个小白曾经踩过的坑

HarmonyOS鸿蒙Next中一个小白曾经踩过的坑

  • 使用startAbility跨设备启动Ability
  • 像这样子设置OperationAbilityName参数是错误的,如下是正确的方式。
  • 在官方论坛中有个很方便的方法获取udid,文档地址开发者中心
  • 但是我在具体使用时遇到了一种情况,就是有开启远程模拟器的情况下,用usb连接真机获取udid时无法获取udid,具体的提示语error:more than one device/emulator
  • 这个的意思是有多个设备,原因是因为这是不仅连接了鸿蒙真机还有远程模拟器,只需要将模拟器关掉即可。
  • 方案:A设备的FA连接B设备的PA将A设备的输入内容实时得传输到(B)PA,然后(B)PA操作B设备的FA实现两部设备的输入内容实时同步。该方案也同样适用于同步拖动ScrollView组件。
  • 一次要申请多种权限时不要用循环申请的方式,而是直接放在数组中集中申请。如下图。
  • 鸿蒙系统有很多有用的AI能力可以快速实现很多功能,例如:识别身份证上的名字、身份证号码、住址等,话不多说上代码
  • private void IDCardOcrDiscern(PixelMap pixelMap)
    {
        AbilitySlice context = this;
        ConnectionCallback connectionCallback = new ConnectionCallback() {
            @Override
            public void onServiceConnect() {
                ITextDetector textDetector = VisionManager.getTextDetector(context);
                VisionImage image = VisionImage.fromPixelMap(pixelMap);
                int result = textDetector.detect(image,text,null);
                if (result != 0) {
                    return;
                }
                List<TextBlock> list = text.getBlocks();
                if (list.size() == 0) {
                    return;
                }
                TextBlock textBlock = list.get(0);
                List<TextLine> arrayList = textBlock.getTextLines();
                if (arrayList.size() == 0) {
                    return;
                }
                String name = "";
                String addr = "";
                String IDNo = "";
                String nameFlag = "姓名";
                String addrFlag = "住址";
                String codeFlag = "公民身份号码";
                boolean firstAddrShow = false;
                for (TextLine textLine :arrayList ) {
                    int i = arrayList.indexOf(textLine);
                    String str = textLine.getValue();
                    if (str.indexOf(nameFlag) > -1) {
                        name = str.replace(nameFlag,"");
                    } else if (str.indexOf(addrFlag) > -1) {
                        addr += str.replace(addrFlag,"");
                    } else if (firstAddrShow) {
                        addr += str.replace(";","");
                    } else if (str.indexOf(codeFlag) > -1) {
                        IDNo = str.replace(codeFlag,"");
                    }
                }
            }
        };
    

更多关于HarmonyOS鸿蒙Next中一个小白曾经踩过的坑的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复
图好像挂了..........

更多关于HarmonyOS鸿蒙Next中一个小白曾经踩过的坑的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你是说哪个位置的图?我没注意到

感谢楼主无私分享,确实有坑啊

这种排坑的帖子是非常有帮助的

很赞,感谢楼主的分享

在HarmonyOS鸿蒙Next开发中,小白常遇到的坑包括:

  1. 环境配置问题:未能正确安装DevEco Studio或配置SDK路径,导致项目无法编译。

  2. 权限管理:未在config.json中正确声明权限,导致应用功能受限。

  3. 组件生命周期:对组件的生命周期理解不足,导致页面状态管理混乱。

  4. API调用错误:未严格按照文档使用API,导致功能异常。

建议仔细阅读官方文档,多参考示例代码,逐步积累经验。

回到顶部