这个问题已经有了答案:
Android: Get Hardware Information Programmatically
5答
正如我所提到的,旧的帖子,即Android: Get Hardware Information Programmatically但没有找到任何相关的答案,也试图在谷歌找到解决方案,但都徒劳无功。请帮我往前走

最佳答案

我最近设置了这样一个东西…注册后,手机会将我能找到的所有有用的硬件/软件参数发送到webservice(带有改进功能)。
以下是我使用的代码的相关部分:

boolean isRooted = findBinary("su");
PackageInfo pInfo;
String version = "unknown";
try {
    pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
    version = pInfo.versionName;
} catch (NameNotFoundException e) {
    e.printStackTrace();
}

myService.sendPhoneDetails(
    android.os.Build.VERSION.SDK_INT,
    android.os.Build.VERSION.RELEASE,
    android.os.Build.BRAND,
    android.os.Build.MANUFACTURER,
    android.os.Build.MODEL,
    android.os.Build.SERIAL,
    isRooted,
    version,
    new Callback<Model>() {
        @Override
            public void success(Model model, Response response) {
                // ....
            }
        @Override
            public void failure(RetrofitError error) {
                // ....
            }
        }
    );

private static boolean findBinary(String binaryName) {
    boolean found = false;
    if (!found) {
        String[] places = { "/sbin/", "/system/bin/", "/system/xbin/",
                "/data/local/xbin/", "/data/local/bin/",
                "/system/sd/xbin/", "/system/bin/failsafe/", "/data/local/" };
        for (String where : places) {
            if (new File(where + binaryName).exists()) {
                found = true;

                break;
            }
        }
    }
    return found;
}

请注意,所有的手机都不能访问相同的信息,比如很少可以访问的电话号码,但是这些电话看起来很常见。
希望这能有帮助…

10-08 07:23