获取Android版本信息

时间:2017-07-16 04:08:40

标签: c# android unity3d

我想从Unity获取Android版本信息。我知道可以使用SystemInfo.operatingSystem来执行此操作,但它没有所有信息,例如版本号,代码名称和其他信息。

我决定使用Android的AndroidJavaClass课程制作Unity Build.VERSION课程的小插件,但遇到了一个我无法解释的问题。

当我这样做时:

AndroidJavaClass("android.os.Build.VERSION");

我找不到课程异常。

使用时有效

AndroidJavaClass("android.os.Build$VERSION");

请注意,我已将"。" 替换为" $" ,现在可以找到该课程。

我以前写了很多插件,之前从未遇到过这个问题。对于example,当我访问Android的Uri课程时,我使用AndroidJavaClass("android.net.Uri");并且它有效。我没有必要在" Uri"之前放置" $"

访问android.net.Uri与访问android.os.Build.VERSION的不同之处是什么?

为什么必须在Build和VERSION之间放置" $" 以便AndroidJavaClass找到这个类?

顺便说一句,这是Unity中Build.VERSION的工作插件:

public class AndroidVersion
{
    static AndroidJavaClass versionInfo;

    static AndroidVersion()
    {
        versionInfo = new AndroidJavaClass("android.os.Build$VERSION");
    }

    public static string BASE_OS
    {
        get
        {
            return versionInfo.GetStatic<string>("BASE_OS");
        }
    }

    public static string CODENAME
    {
        get
        {
            return versionInfo.GetStatic<string>("CODENAME");
        }
    }

    public static string INCREMENTAL
    {
        get
        {
            return versionInfo.GetStatic<string>("INCREMENTAL");
        }
    }

    public static int PREVIEW_SDK_INT
    {
        get
        {
            return versionInfo.GetStatic<int>("PREVIEW_SDK_INT");
        }
    }

    public static string RELEASE
    {
        get
        {
            return versionInfo.GetStatic<string>("RELEASE");
        }
    }

    public static string SDK
    {
        get
        {
            return versionInfo.GetStatic<string>("SDK");
        }
    }

    public static int SDK_INT
    {
        get
        {
            return versionInfo.GetStatic<int>("SDK_INT");
        }
    }

    public static string SECURITY_PATCH
    {
        get
        {
            return versionInfo.GetStatic<string>("SECURITY_PATCH");
        }
    }

    public static string ALL_VERSION
    {
        get
        {
            string version = "BASE_OS: " + BASE_OS + "\n";
            version += "CODENAME: " + CODENAME + "\n";
            version += "INCREMENTAL: " + INCREMENTAL + "\n";
            version += "PREVIEW_SDK_INT: " + PREVIEW_SDK_INT + "\n";
            version += "RELEASE: " + RELEASE + "\n";
            version += "SDK: " + SDK + "\n";
            version += "SDK_INT: " + SDK_INT + "\n";
            version += "SECURITY_PATCH: " + SECURITY_PATCH;

            return version;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

android.os.Build$VERSION本身是一个内部类,因此必须附加$让JRE使用点号来确定包与内部类。

拥有android.os.Build.VERSION意味着转到VERSION包内的Build类,而android.os.Build$VERSION意味着转到内部VersionBuild

中的os