如何从Python脚本检测Android操作系统?

2024-04-26 22:47:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Android设备上的termux环境中运行python脚本,我希望能够检测到操作系统是Android

传统方法不起作用:

>>> import platform
>>> import system
>>> print(platform.system())
'Linux'
>>> print(sys.platform)
'linux'
>>> print(platform.release())
'4.14.117-perf+'
>>> print(platform.platform())
'Linux-4.14.117-perf+-aarch64-with-libc'

还有哪些其他ootb选项可用

一个明显有用的选项是platform.machine(),它返回armv8-这不仅仅是“Linux”,它只是架构,而不是操作系统,它可能返回假阳性,例如在raspberry pi或其他基于arm的系统上


Tags: 方法import脚本releaselinux选项sys传统
2条回答

有一种更简单的方法,它不依赖于使用外部实用程序,只使用操作系统模块。 以下是代码:

import os # import **os** module, since we need it's *environ* variable

def isAndroid() -> bool: # function for fast usage
    for item in list(os.environ.keys()): # checks every **key** in **os.environ** dict
        if "ANDROID" in item: # if **key** contains word **ANDROID** then return True and break
            return True
    return False # returns False if no match happened

TermuxPydroid 3上返回True,但尚未在其他环境中测试

这种方法在理论上有缺陷: 由于此方法使用os模块提供的环境列表,如果有人更改它,或者即使是ANDROID平台,它的键中也不包含ANDROID单词,那么它将返回False

编辑Python 3.7+选项/变体

import sys
is_android: bool = hasattr(sys, 'getandroidapilevel') # Availability = 3.7+

除了版本限制/可用性和任何其他实现中可能未实现之外,此选项没有任何缺陷

我试过了,但没有成功。因此我建议使用subprocess,因为uname -o返回b'Android\n'

以下是Android的一个简单检查:

import subprocess
subprocess.check_output(['uname', '-o']).strip() == b'Android'

相关问题 更多 >