问题:有没有办法来判断一下在APP运行时是在HarmonyOS系统中还是在Android系统中?即只想证明运行环境就是HarmonyOS鸿蒙系统。
回答: 以下答案可以尝试下,但不一定保证每个机型都能用。 1、暂时用下面这个,但不知道官方api是什么 public static boolean isHarmonyOs() { try { Class.forName("ohos.abilityshell.HarmonyApplication"); return true; } catch (ClassNotFoundException e) { return false; } } 注:以上不一定行,因为华为手机非鸿蒙系统也存在这个类,但有些没有这个类就可以用,比如荣耀9X没有这个类,也可用ohos.system.version.SystemVersion试试。 2、尝试以下的 public static boolean isOhos() { boolean isOhos = false; try { Class<?> abilityClass = Class.forName("ohos.aafwk.ability.Ability"); ClassLoader classLoader = abilityClass.getClassLoader(); //如果Ability为系统提供的,其classloader为BootClassLoader //如果Ability为伪造的,其classloader一般为PathClassLoader System.out.println("abilityClassLoader: " + classLoader); //BootClassLoader的parent为null if (classLoader != null && classLoader.getParent() == null) { isOhos = true; } } catch (ClassNotFoundException ignored) { } return isOhos; }
说明: 参考鸿蒙HarmonyOS如何获取系统版本、当前设备类型和手机型号。 关于设备显示的鸿蒙系统版本号是2.0.0,但是用ohos.system.version.SystemVersion.getVersion获取到的是2.1.0,这个问题是怎么回事?有网友推测,这应该是鸿蒙自身的问题。不过这一问题不会一直存在,因为基本的问题只要修复或者完善后,都能通过简单的途径获得。 |