这个问题已经有了答案:
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;
}
请注意,所有的手机都不能访问相同的信息,比如很少可以访问的电话号码,但是这些电话看起来很常见。
希望这能有帮助…