admin管理员组

文章数量:1630184

目录

  • 一、简介
  • 二、获取鸿蒙系统版本


一、简介

Android应用可以在鸿蒙系统中运行是因为鸿蒙系统提供了一种兼容层(compatibility layer)来支持Android应用的运行。

鸿蒙系统的兼容层是一个软件层,用于在鸿蒙系统内部模拟Android运行环境。这个兼容层可以实现在鸿蒙系统上运行Android应用的关键功能,例如处理Android应用程序包(APK)的安装、解析和执行,还包括实现Android应用所依赖的核心组件、库和API的功能。

当你在鸿蒙系统中安装并启动一个Android应用时,鸿蒙系统会使用兼容层来创建一个虚拟的Android运行环境,并在该环境中加载和执行应用的代码。兼容层会在鸿蒙系统底层和Android应用之间建立一个桥接,实现双方的交互。

当我们在Android应用代码中获取系统版本时,其实获取的是虚拟的Android环境的系统版本,如何在Android应用中获取鸿蒙手机的系统版本呢?


二、获取鸿蒙系统版本

封装鸿蒙工具类:

import android.text.TextUtils;
import java.lang.reflect.Method;

public class HarmonyUtils {
    /**
     * 是否为鸿蒙系统
     * @return true为鸿蒙系统
     */
    public static boolean isHarmonyOs() {
        try {
            Class<?> buildExClass = Class.forName("com.huawei.system.BuildEx");
            Object osBrand = buildExClass.getMethod("getOsBrand").invoke(buildExClass);
            return "Harmony".equalsIgnoreCase(osBrand.toString());
        } catch (Throwable x) {
            return false;
        }
    }

    /**
     * 获取鸿蒙系统版本号(大版本号)
     * @return 版本号
     */
    public static String getHarmonyVersion() {
        return getProp("hw_sc.build.platform.version", "");
    }

    /**
     * 通过反射获取属性
     * @param property
     * @param defaultValue
     * @return
     */
    private static String getProp(String property, String defaultValue) {
        try {
            Class spClz = Class.forName("android.os.SystemProperties");
            Method method = spClz.getDeclaredMethod("get", String.class);
            String value = (String) method.invoke(spClz, property);
            if (TextUtils.isEmpty(value)) {
                return defaultValue;
            }
            return value;
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return defaultValue;
    }

    /**
     * 获得鸿蒙系统版本号(含小版本号,实际上同Android的android.os.Build.DISPLAY)
     * @return 版本号
     */
    public static String getHarmonyDisplayVersion() {
        return android.os.Build.DISPLAY;
    }
}

注:在使用过程中,首先判断手机是否是鸿蒙系统,如果是的话,在获取鸿蒙版本号。


本文标签: 鸿蒙代码系统信息android