我有一个应用程序,运行在运行Fedora或Android的几个移动设备上。为了巩固我的代码库和分发,我想确定我在哪个操作系统上。我尝试了System.getProperty(“os.name”),但只返回“Linux”。系统属性中是否有Android独有的东西? 感谢
答案 0 :(得分:22)
您可以查看几个属性。候选人是:
也许你想自己检查一下?
Properties p = System.getProperties();
Enumeration keys = p.keys();
while(keys.hasMoreElements()) {
String key = (String) keys.nextElement();
String value = (String) p.get(key);
System.out.println(key + " >>>> " + value);
}
答案 1 :(得分:6)
我不知道Android但是如果你没有找到一些独特的系统属性,你有时可以识别系统,如果存在某些特定的类。所以你可以做到以下几点:
boolean isAndroid() {
try {
Class.forName("the class name");
return true;
} catch(ClassNotFoundException e) {
return false;
}
}
答案 2 :(得分:3)
以下是我使用此页面中的信息编写的一些代码,以防您要复制粘贴:
private static YLogger ylogger;
public static YLogger getLogger() {
if (ylogger == null){
// need to find a new logger. Let's check if we have Android running
if (System.getProperty("java.vm.name").equalsIgnoreCase("Dalvik")){
ylogger = new AndroidLogger();
ylogger.d("YLoggerFactory", "Instantiating Android-based logger");
} else {
// fallback option, system logger.
ylogger = new SystemLogger();
ylogger.d("YLoggerFactory", "Instantiating System-based logger");
}
}
return ylogger;
}
答案 3 :(得分:2)
已定义系统属性的列表在这里:https://developer.android.com/reference/java/lang/System#getProperties()
我正在使用
boolean android = "The Android Project".equals(System.getProperty("java.specification.vendor"));
答案 4 :(得分:0)
我在加工草图中使用它来确定我以哪种模式运行,即我在哪里运行。
enum Mode {
java, android
}
Mode getMode() {
return (System.getProperty("java.runtime.name") == "Android Runtime") ? Mode.android : Mode.java;
}
if (getMode() == Mode.java){
// do something
// eg: do something that android can't handle
} else {
// do android stuff
// eg: scale the sketch by 2 to improve visibility
}