簡體   English   中英

如何確定 Android 設備的安全補丁級別?

[英]How to determine the Security Patch Level of an Android device?

如何使用 API 或其他機制確定 Android 設備的安全補丁級別? 我正在尋找可以通過單擊設備上的Settings -> About菜單手動找到的相同安全補丁信息。

Google 每個月都會發布安全補丁,例如2016-12-01

在此處輸入圖片說明

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

在 Lollipop 中,可以使用getprop命令讀取 ro.build.version.security_patch 的值。 請參閱此S/O 問題以了解如何使用 ProcessBuilder 執行getprop

自 2015 年 10 月以來,安全補丁每月發布一次,有關更多詳細信息,請參閱Android 安全公告

我認為沒有 root 訪問是不可能的,因為安全補丁級別存儲在 build.prop 中的ro.build.version.security_patch字段中, ro.build.version.security_patch字段位於/system/路徑中。

如果您具有 root 訪問權限,則只需讀取該文件並查找上述字段即可。

編輯:正如@v6ak 提到的,您也可以在沒有 root 的情況下正確訪問值。

該值存儲在/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();
}

您可以從 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");

您還可以使用以下 adb 命令

adb shell getprop | egrep

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM