Android有没有办法检测cyanogenmod及其版本?
我正在研究一款需要均衡器的Android媒体播放器。 但是,均衡器仅适用于Gingerbread及以上版本,但cyanogenmod 6已修改audioflinger作为均衡器,因此我想检测操作系统版本。
你可以阅读os.version
属性并匹配:
String version = System.getProperty("os.version"); if (version.contains("cyanogenmod")) { isCyanogenMode = true; }
在我的设备上, os.version
是2.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; }