2009-10-10 41 views
8

我在我的應用程序中有一個自動的錯誤報告工具,其中包含用於調試的有用信息。如何找出ROM提供者是誰?

我想包括的一件事是ROM提供者。特別是我想知道用戶是否正在運行自定義ROM,哪些版本號最好。

任何想法如何以編程方式檢索此信息?

---從金廷採取的措施(見下文)

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 ROM的人都可以爲我運行這個嗎?

Btw。小心,這是GPL代碼。我爲人不能使用它。 任何更簡單或非GPL的方式?

回答

4

Cyanogen-Updater項目中有代碼具有此功能,雖然我認爲rom信息是由rom開發人員提供的prop文件提供的,所以我不確定它是否可以普遍使用。我沒有徹底調查過,但你可以看看源代碼並找出它。

+0

我看了一下。 http://code.google.com/p/cyanogen-updater/source/browse/trunk/src/cmupdaterapp/utils/SysUtils.java#19 公共靜態字符串getReadableModVersion(){ 字符串modVer = getSystemProperty(常量。SYS_PROP_MOD_VERSION); return(modVer == null || modVer.length()== 0?「Unknown」:modVer); } 其中常量是這樣的: public static final String SYS_PROP_MOD_VERSION =「ro.modversion」; 你運行Cyanogen嗎?你能爲我執行並告訴我結果嗎? – 2009-10-10 11:56:32

+0

評論中沒有格式?無論我把它放在頂部。 – 2009-10-10 12:08:40

+0

是的,我確實有他的ROM運行版本,我的結果是「CyanogenMod-4.0.4」,但是當通過仿真器運行在官方SDK版本上時,我確實會得到「未知」。 'ro.modversion'設置在/system/build.prop的build.prop文件中 – 2009-10-10 14:39:55

5

我不知道提供商是否有明確的指標,但您可以檢查/proc/version的內容。下面是輸出的CyanogenMod 4.0.4:

Linux版本的2.6.29.6-CM4(遮陽@ toxygen)(gcc版本4.4.0(GCC))#8 PREEMPT週五8月28日20時30分25秒EDT 2009年

這裏的提示是「CM4」後綴,這(我相信)代表的CyanogenMod 4(加上獨特的用戶@主機位,雖然不太清楚)。爲了便於比較,這裏的版本模擬器中運行1.6:

Linux版本的2.6.27-00110-g132305e([email protected])(gcc版本4.2.1)#6星期一2月2日12:47:38 PST 2009

您還可以檢查android.os.Build的值。關於Build.TYPE沒有太多的信息,但我假設類型「eng」代表正式版本,類型「user」代表自制版本,所以這也可能有用。

+0

我想我會去用系統屬性的其他方法。不過謝謝。 Btw。我相信目前官方的HTC hero ROM運行ENG構建。 – 2009-10-10 11:58:13

3

自定義ROMS傾向於覆蓋Build.DISPLAY。我剛剛檢查過CheckRom REVOHD V6,它工作正常。

相關問題