如何确定Android设备的安全补丁级别?

时间:2017-01-09 10:18:27

标签: android security patch

如何使用API​​或其他机制确定Android设备的安全补丁级别?我正在寻找可以通过点击设备上的Settings -> About菜单手动找到的相同安全补丁信息。

Google每月都会发布安全补丁,例如2016-12-01

enter image description here

5 个答案:

答案 0 :(得分:10)

在Android SDK 23(Marshmallow)及更高版本中,您可以从android.os.Build.VERSION.SECURITY_PATCH检索安全补丁日期。日期是YYYY-MM-DD形式的字符串值。

在Lollipop中,您可以使用 getprop 命令读取ro.build.version.security_patch的值。有关如何使用ProcessBuilder执行 getprop ,请参阅此S/O question

自2015年10月以来,每月都会发布安全补丁,有关详细信息,请参阅Android Security Bulletins

答案 1 :(得分:2)

我认为没有root访问权限是不可能的,因为安全补丁程序级别存储在ro.build.version.security_patch路径内的build.prop内的/system/字段中。

如果您具有超级用户权限,则只需阅读该文件并查找上述字段即可。

编辑:正如@ v6ak所提到的,你也可以在没有root的情况下正确访问值。

答案 2 :(得分:1)

从adb shell中,您可以执行getprop ro.build.version.security_patch。 希望这些属性可用于Android上的非root进程。

所以在C / C ++中我会尝试使用:     system(“getprop ro.build.version.security_patch”);

或者在Java中:

import android.os.Bundle;
public static final String SECURITY_PATCH = SystemProperties.get(
            "ro.build.version.security_patch");

答案 3 :(得分:0)

此值存储在/system/bin/getprop系统文件中。您可以通过以下方式阅读它:

try {
    Process process = new ProcessBuilder()
            .command("/system/bin/getprop")
            .redirectErrorStream(true)
            .start();

    InputStream is = process.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    String line;

    while ((line = br.readLine()) != null) {
        str += line + "\n";
        if (str.contains("security_patch")) {
            String[] splitted = line.split(":");
            if (splitted.length == 2) {
                return splitted[1];
            }
            break;
        }
    }

    br.close();
    process.destroy();

} catch (IOException e) {
    e.printStackTrace();
}

答案 4 :(得分:0)

你也可以使用下面的adb命令

adb shell getprop | egrep