Я хочу получить информацию о версии Android от Unity. Я знаю, что для этого можно использовать SystemInfo.operatingSystem, но он не содержит всей информации, такой как номер выпуска, кодовое имя и другую информацию.
Я решил создать небольшой плагин с классом Unity AndroidJavaClass, используя класс Android Build.VERSION, но столкнулся с проблемой, которую не могу объяснить.
Когда я это сделаю:
AndroidJavaClass("android.os.Build.VERSION");
Я получаю исключение «Класс не найден».
Оно работает при использовании:
AndroidJavaClass("android.os.Build$VERSION");
Обратите внимание, что я заменил "." на "$", и теперь класс можно найти.
В прошлом я написал много плагинов и никогда раньше не сталкивался с этой проблемой. Например, когда я обращался к классу Android Uri, я использовал AndroidJavaClass("android.net.Uri");, и это сработало. Мне не нужно было ставить "$" перед "Uri".
Чем доступ к android.net.Uri отличается от доступа к android.os.Build.VERSION?
Почему вам нужно ставить "$" между Build и VERSION, чтобы AndroidJavaClass мог найти этот класс?
Кстати, вот рабочий плагин Build.VERSION в Unity:
public class AndroidVersion
{
static AndroidJavaClass versionInfo;
static AndroidVersion()
{
versionInfo = new AndroidJavaClass("android.os.Build$VERSION");
}
public static string BASE_OS
{
get
{
return versionInfo.GetStatic("BASE_OS");
}
}
public static string CODENAME
{
get
{
return versionInfo.GetStatic("CODENAME");
}
}
public static string INCREMENTAL
{
get
{
return versionInfo.GetStatic("INCREMENTAL");
}
}
public static int PREVIEW_SDK_INT
{
get
{
return versionInfo.GetStatic("PREVIEW_SDK_INT");
}
}
public static string RELEASE
{
get
{
return versionInfo.GetStatic("RELEASE");
}
}
public static string SDK
{
get
{
return versionInfo.GetStatic("SDK");
}
}
public static int SDK_INT
{
get
{
return versionInfo.GetStatic("SDK_INT");
}
}
public static string SECURITY_PATCH
{
get
{
return versionInfo.GetStatic("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;
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/451 ... nformation