我在我的应用程序中有一个自动错误报告功能,其中包含用于调试的有用信息。
我想要包括的一件事是ROM提供者。特别是,我想知道用户是否正在运行自定义ROM以及哪个版本,最好甚至包括版本号。
有什么办法可以通过编程方式检索此信息吗?
--- 来自 Quintin(见下文)
public static String getReadableModVersion() {
String modVer = getSystemProperty(Constants.SYS_PROP_MOD_VERSION);
return (modVer == null || modVer.length() == 0 ? "Unknown" : modVer);
}
其中不变的是:
public static final String SYS_PROP_MOD_VERSION = "ro.modversion";
这里是getSystemProperty();
public static String getSystemProperty(String propName){
String line;
BufferedReader input = null;
try
{
Process p = Runtime.getRuntime().exec("getprop " + propName);
input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);
line = input.readLine();
input.close();
}
catch (IOException ex)
{
Log.e(TAG, "Unable to read sysprop " + propName, ex);
return null;
}
finally
{
if(input != null)
{
try
{
input.close();
}
catch (IOException e)
{
Log.e(TAG, "Exception while closing InputStream", e);
}
}
}
return line;
}
有使用CM ROM的人能为我运行这个吗?
顺便说一下,这是GPL代码。我不能使用它。 是否有更简单或非GPL的方法?
Build.TYPE
不足以确定它是否是自定义ROM。我刚在运行Android 9的三星Galaxy Note 10上进行了测试,它返回了“user”。 - Sam