如何确定我的应用是否在Android上运行

Tim*_*ley 24 java android

我有一个应用程序,运行在运行Fedora或Android的几个移动设备上.为了巩固我的代码库和分发,我想确定我在哪个操作系统上.我尝试了System.getProperty("os.name"),但这只是返回"Linux".系统属性中是否有Android独有的东西?谢谢

Her*_*r K 26

您可以检查几个属性.候选人是:

  • java.vendor.url - > http://www.android.com
  • java.vm.name - > Dalvik(我不知道,Fedora正在使用哪一个...)
  • java.vm.vendor - > Android项目
  • java.vendor - > Android项目

也许你想自己检查一下?

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);
}
Run Code Online (Sandbox Code Playgroud)

  • 从Android 5开始,java.runtime.name返回null.所以,它不可靠. (5认同)
  • 谢谢,我去了"java.runtime.name"="android运行时". (3认同)
  • 更短:`System.getProperties().list(System.out);` (3认同)
  • 你好,这确实很有帮助。Android 人员是否有任何官方消息表明其中哪些将保持不变?谢谢。 (2认同)

Ale*_*exR 7

我不知道Android,但如果你没有找到一些独特的系统属性,你有时可以识别系统,如果存在某些特定的类.所以你可以做到以下几点:

boolean isAndroid() {
    try {
        Class.forName("the class name");
        return true;
    } catch(ClassNotFoundException e) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)