Android有没有办法检测cyanogenmod及其版本?

我正在研究一款需要均衡器的Android媒体播放器。 但是,均衡器仅适用于Gingerbread及以上版本,但cyanogenmod 6已修改audioflinger作为均衡器,因此我想检测操作系统版本。

你可以阅读os.version属性并匹配:

 String version = System.getProperty("os.version"); if (version.contains("cyanogenmod")) { isCyanogenMode = true; } 

在我的设备上, os.version2.6.37.6-cyanogenmod-01509-g8913be8

截至今天,cyanogenmod的内核在System.getProperty("os.version");中不包含System.getProperty("os.version");关键字System.getProperty("os.version"); 它类似于3.0.64-CM-g9d16c8a 。 所以我写了这个函数。

 private boolean isCyanogenMod(PackageManager pm) { boolean isCyanogenMod = false; String version = System.getProperty("os.version"); BufferedReader reader = null; try { if (version.contains("cyanogenmod") || pm.hasSystemFeature("com.cyanogenmod.android")) { isCyanogenMod = true; } else { // This does not require root reader = new BufferedReader(new FileReader("/proc/version"), 256); version = reader.readLine(); if (version.contains("cyanogenmod")) { isCyanogenMod = true; } } } catch (Exception e) { e.printStackTrace(); } finally { if(reader != null) { try { reader.close(); } catch (IOException e) { } } } return isCyanogenMod; } 

这是一个老问题,但我最近想出了一个更好的解决方案。

 public static boolean isCyanogenMod() { try { return Class.forName("cyanogenmod.os.Build") != null; } catch (Exception ignored) { } return false; }