Я хочу получить информацию о версии 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
Получить информацию о версии Android ⇐ Android
Форум для тех, кто программирует под Android
1769416442
Anonymous
Я хочу получить информацию о версии Android от Unity. Я знаю, что для этого можно использовать SystemInfo.operatingSystem, но он не содержит всей информации, такой как номер выпуска, кодовое имя и другую информацию.
Я решил создать небольшой плагин с классом Unity AndroidJavaClass, используя класс Android Build.VERSION, но столкнулся с проблемой, которую не могу объяснить.
Когда я это сделаю:
AndroidJavaClass("android.os.Build.VERSION");
Я получаю исключение «Класс не найден».
Оно [b]работает[/b] при использовании:
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;
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/45124874/get-android-version-information[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия