云网牛站
所在位置:首页 > HarmonyOS问题与回答 > 在APP运行时怎么知道是运行在HarmonyOS还是在Android系统

在APP运行时怎么知道是运行在HarmonyOS还是在Android系统

2021-06-09 11:19:12作者:从此山水不相逢稿源:HarmonyOS站

问题:有没有办法来判断一下在APP运行时是在HarmonyOS系统中还是在Android系统中?即只想证明运行环境就是HarmonyOS鸿蒙系统。

在APP运行时怎么知道是运行在HarmonyOS还是在Android系统

 

回答:

以下答案可以尝试下,但不一定保证每个机型都能用。

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,这个问题是怎么回事?有网友推测,这应该是鸿蒙自身的问题。不过这一问题不会一直存在,因为基本的问题只要修复或者完善后,都能通过简单的途径获得。

精选文章
热门文章