Как узнать, кто является поставщиком ПЗУ? - PullRequest
8 голосов
/ 10 октября 2009

В моем приложении есть функция автоматического сообщения об ошибках, включающая полезную информацию для отладки.

Одна вещь, которую я хотел бы включить, - это поставщик ПЗУ. В частности, я хотел бы знать, работает ли пользователь с пользовательским ПЗУ и какой, желательно даже с номером версии.

Есть идеи, как получить эту информацию программно?

--- Взято с Квинтина (см. Ниже)

http://code.google.com/p/cyanogen-updater/source/browse/trunk/src/cmupdaterapp/utils/SysUtils.java#19:

public static String getReadableModVersion() { 
  String modVer = getSystemProperty(Constants.SYS_PROP_MOD_VERSION); 
  return (modVer == null || modVer.length() == 0 ? "Unknown" : modVer); 
} 

При этом константа это:

public static final String SYS_PROP_MOD_VERSION = "ro.modversion"; 

А вот и getSystemProperty ();

public static String getSystemProperty(String propName){
            String line;
            BufferedReader input = null;
    try
    {
            Process p = Runtime.getRuntime().exec("getprop " + propName);
        input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);
        line = input.readLine();
        input.close();
    }
    catch (IOException ex)
    {
            Log.e(TAG, "Unable to read sysprop " + propName, ex);
            return null;
    }
    finally
    {
            if(input != null)
            {
                            try
                            {
                                    input.close();
                            }
                            catch (IOException e)
                            {
                                    Log.e(TAG, "Exception while closing InputStream", e);
                            }
            }
    }
    return line;
}

Может ли кто-нибудь с ПЗУ CM запустить это для меня?

Btw. Осторожно, это код GPL. Я, например, не могу его использовать. Любой более простой или не GPL способ?

Ответы [ 3 ]

5 голосов
/ 10 октября 2009

Не знаю, есть ли четкий индикатор провайдера, но вы можете проверить содержимое /proc/version. Вот вывод для CyanogenMod 4.0.4:

версия Linux 2.6.29.6-cm4 (shade @ toxygen) (версия gcc 4.4.0 (GCC)) # 8 ПРЕДИСЛОВИЕ Пт 28 августа 20:30:25 EDT 2009

Подсказка - это суффикс "cm4", который (, я полагаю ) обозначает CyanogenMod 4 (плюс отличительный бит user @ host, хотя и менее понятный). Для сравнения вот версия для эмулятора 1.6:

Версия Linux 2.6.27-00110-g132305e (mikechan@cheetara.corp.google.com) (версия gcc 4.2.1) # 6 Пн, 2 февраля, 12:47:38 PST 2009

Вы также можете проверить значения для android.os.Build. О Build.TYPE не так много информации, но я предполагаю, что тип "eng" обозначает официальную сборку, а тип "пользователь" обозначает самодельную сборку, так что это тоже может быть полезно.

4 голосов
/ 10 октября 2009

Есть код в Cyanogen-Updater проекте, который имеет эту функциональность, хотя я думаю, что информация о ROM предоставляется в виде файла поддержки, предоставленного разработчиком rom, поэтому я не уверен, будет ли он работать универсально. Я не исследовал это полностью, но вы можете взглянуть на источник и выяснить это.

3 голосов
/ 03 апреля 2012

Пользовательские ПЗУ имеют тенденцию перезаписывать Build.DISPLAY. Я только что проверил с CheckRom REVOHD V6, и это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...