如何使用API或其他机制确定Android设备的安全补丁级别?我正在寻找可以通过点击设备上的Settings -> About
菜单手动找到的相同安全补丁信息。
Google每月都会发布安全补丁,例如2016-12-01。
答案 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