如何使用Android获取Linux内核的版本?

如何在Android应用程序中获取Linux内核版本

不是100%确定,但我认为调用“uname -r”将需要root权限。 反正有一个不太脏的方法来做到这一点,即:

System.getProperty("os.version"); 

我在这里找到了这个信息: http : //cb1991.blogspot.com/2011/03/android-code-to-get-kernel-version.html

如果你想完整的内核版本已经显示在Android手机,这是解析文件:/ proc / version

下面是Android源代码的摘录,它检索实际的内核版本字符串:

 private String getFormattedcoreelVersion() { String procVersionStr; try { procVersionStr = readLine(FILENAME_PROC_VERSION); final String PROC_VERSION_REGEX = "\\w+\\s+" + /* ignore: Linux */ "\\w+\\s+" + /* ignore: version */ "([^\\s]+)\\s+" + /* group 1: 2.6.22-omap1 */ "\\(([^\\s@]+(?:@[^\\s.]+)?)[^)]*\\)\\s+" + /* group 2: (xxxxxx@xxxxx.constant) */ "\\((?:[^(]*\\([^)]*\\))?[^)]*\\)\\s+" + /* ignore: (gcc ..) */ "([^\\s]+)\\s+" + /* group 3: #26 */ "(?:PREEMPT\\s+)?" + /* ignore: PREEMPT (optional) */ "(.+)"; /* group 4: date */ Pattern p = Pattern.compile(PROC_VERSION_REGEX); Matcher m = p.matcher(procVersionStr); if (!m.matches()) { Log.e(LOG_TAG, "Regex did not match on /proc/version: " + procVersionStr); return "Unavailable"; } else if (m.groupCount() < 4) { Log.e(LOG_TAG, "Regex match on /proc/version only returned " + m.groupCount() + " groups"); return "Unavailable"; } else { return (new StringBuilder(m.group(1)).append("\n").append( m.group(2)).append(" ").append(m.group(3)).append("\n") .append(m.group(4))).toString(); } } catch (IOException e) { Log.e(LOG_TAG, "IO Exception when getting kernel version for Device Info screen", e); return "Unavailable"; } } 

调用uname -r并从stdout读取其输出。 它不应该太复杂。 输出只是版本号。


 Runtime.getRuntime().exec("uname -r"); 

假设你编写Java代码(据我所知,Android应用程序是用Java编写的),这可能会帮助你: http : //www.java-tips.org/java-se-tips/java.lang/how-to-执行-A-命令从-code.html

如果你是从应用程序这样做,这会给你内核版本字符串:

 public static String readcoreelVersion() { try { Process p = Runtime.getRuntime().exec("uname -a"); InputStream is = null; if (p.waitFor() == 0) { is = p.getInputStream(); } else { is = p.getErrorStream(); } BufferedReader br = new BufferedReader(new InputStreamReader(is), BUFFER_SIZE); String line = br.readLine(); br.close(); return line; } catch (Exception ex) { return "ERROR: " + ex.getMessage(); } }