2009-10-10 21 views
8

Mam automatyczną funkcję zgłaszania błędów w mojej aplikacji, która zawiera przydatne informacje do debugowania.Jak dowiedzieć się, kto jest dostawcą ROM?

Jedna rzecz, którą chciałbym dołączyć to dostawca ROM. W szczególności chciałbym wiedzieć, czy użytkownik uruchamia niestandardową ROM, a najlepiej nawet z numerem wersji.

Każdy pomysł, jak pobierać te informacje programowo?

--- Zrobione z Quintin (patrz niżej)

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); 
} 

Przy czym stała to:

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

A oto 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; 
} 

Czy ktokolwiek z CM ROM może uruchomić to dla mnie?

Przy okazji. Ostrożnie, to jest kod GPL. Ja nie mogę tego użyć. Czy jest to łatwiejsza droga niż GPL?

Odpowiedz

4

Jest kod w projekcie Cyanogen-Updater, który ma tę funkcjonalność, chociaż myślę, że informacje rom są dostarczane przez plik prop dostarczony przez programistę ROM, więc nie jestem pewien, czy będzie działać uniwersalnie. Nie zbadałem tego dokładnie, ale możesz przyjrzeć się źródłu i dowiedzieć się tego.

+0

Spojrzałem. http://code.google.com/p/cyanogen-updater/source/browse/trunk/src/cmupdaterapp/utils/SysUtils.java#19 public static getReadableModVersion String() { String ModVer = getSystemProperty (Stałe.SYS_PROP_MOD_VERSION); return (modVer == null || modVer.length() == 0? "Unknown": modVer); } Stała to: public static final String String SYS_PROP_MOD_VERSION = "ro.modversion"; Czy używasz Cyanogen? Czy mógłbyś to dla mnie zrobić i powiedzieć mi o wyniku? –

+0

Brak formatowania w komentarzach? Niezależnie od tego, co umieściłem to również na górze. –

+0

Tak, mam wersję jego romu, a moim wynikiem jest "CyanogenMod-4.0.4", jednak kiedy uruchamiam oficjalną wersję SDK przez emulator, otrzymuję komunikat "Unknown". 'Ro.modversion' jest ustawiony w pliku build.prop na /system/build.prop –

5

Nie wiem, czy istnieje wyraźny wskaźnik dostawcy, ale można sprawdzić zawartość /proc/version. Poniżej znajduje się wyjście na CyanogenMod 4.0.4:

Linux w wersji 2.6.29.6-cm4 (odcień @ toxygen) (wersja gcc 4.4.0 (GCC)) # 8 PREEMPT Fri Aug 28 20:30:25 EDT 2009

Podpowiedź jest tu „cm4” sufiks, który (wierzę) oznacza CyanogenMod 4 (oraz charakterystyczny użytkownik @ bitu gospodarza, chociaż mniej wyraźnie). Dla porównania, oto wersja dla emulator działa 1.6:

wersji Linux 2.6.27-00110-g132305e ([email protected]) (wersja gcc 4.2.1) # 6 Pon 02 lutego 12:47:38 PST 2009

Można również sprawdzić wartości dla android.os.Build. Nie ma zbyt wiele informacji na temat Build.TYPE, ale zakładam, że typ "eng" oznacza oficjalną kompilację, a typ "user" oznacza kompilację home-made, więc może być przydatna.

+0

Myślę, że zastosuję inne podejście do własności systemu. Ale i tak dzięki. Btw. Uważam, że obecny, oficjalny, HTC hero rom ma wersję ENG. –

3

Własne ROMy mają tendencję do nadpisywania Build.DISPLAY. Właśnie sprawdziłem z CheckRom REVOHD V6 i zadziałało.

Powiązane problemy