【问题标题】:Python: Detect AndroidPython:检测安卓
【发布时间】:2018-06-09 16:25:27
【问题描述】:

我很惊讶地发现关于这个主题的信息很少。我想检测用户是否正在运行 Android。我正在使用:

platform.dist()

这完美地检测了所有的操作系​​统和不同的 Linux 发行版。但是,在 Android 上运行它时,它的系统名称始终返回为“Linux”。有没有办法检测安卓?我不想包含任何 3rd 方模块,因为它必须尽可能便携。是否有一些特定的 Android 函数可以在 try-catch 中调用?

【问题讨论】:

    标签: android python operating-system detect


    【解决方案1】:

    从 Python 3.7 开始,您可以检查 sys.getandroidapilevel() 是否存在:

    import sys
    
    if hasattr(sys, 'getandroidapilevel'):
        # Yes, this is Android
    else:
        # No, some other OS
    

    【讨论】:

      【解决方案2】:

      这是一个非常简单的方法,你可以在没有 kivy 或使用 hpcomt 模块的 kivy 模块的情况下做到这一点

      import hpcomt
      os_name = hpcomt.Name()
      print(os_name)
      
      # Output
      # Android
      
      

      【讨论】:

        【解决方案3】:
        from os import environ
        if 'ANDROID_BOOTLOGO' in environ:
           print("Android!")
        else:
           print("!Android")
        

        【讨论】:

        • 虽然此代码可能会为问题提供解决方案,但最好添加有关其工作原理/方式的上下文。这可以帮助未来的用户学习并最终将这些知识应用到他们自己的代码中。解释代码时,您也可能会得到用户的积极反馈/赞成。
        【解决方案4】:

        您可以通过Kivy 做到这一点

        from kivy.utils import platform
        
        if platform == 'android':
            # do something
        

        编辑:

        正如我所说,我不能使用任何 3rd 方库

        Take a look at how Kivy implemented it.

        def _get_platform():
            # On Android sys.platform returns 'linux2', so prefer to check the
            # presence of python-for-android environment variables (ANDROID_ARGUMENT
            # or ANDROID_PRIVATE).
            if 'ANDROID_ARGUMENT' in environ:
                return 'android'
        

        【讨论】:

        • 正如我所说,我不能使用任何第 3 方库。该程序必须是可移植的,并且只能使用标准的 python 模块。
        • 暗示from os import environ... 对于那些想要完整答案而无需点击另一个链接的人。
        【解决方案5】:

        系统名称返回“Linux”,因为 Android 也是基于 Linux 内核。Android 是发行版的名称,但在其 linux 的深处。

        【讨论】:

        • 是的,我知道这一点。但我还是想知道设备是不是安卓,这样我就可以区分安卓和其他发行版。返回所有其他发行版的名称(例如:Ubuntu、Fedora 等),但不适用于 Android
        猜你喜欢
        • 2017-04-13
        • 2021-09-08
        • 2015-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-23
        相关资源
        最近更新 更多