File: android-tkinter/CODE/

To predefine names for platform-specific code, place this file in your
source-code package folder, and add this statement to any code file:

    from _android_test import *

Then use the three 'Running*' names below in your platform-test 'if's.

Future goal: use this for integrating Android code changes into base 
files; changes should really be 'if' statements, not custom versions.
This awaits more end-user testing, and source-code package rereleases.

Note, however, that the changes required for Pydroid 3 are specific 
to Pydroid 3 only (e.g., the sys.executable hardcoding).  The ethics 
of changing the portable source-code package to support just a single
app on Android are dubious, especially when that app employs freemium 
advertising.  For now, Pydroid 3 is best supported by custom code.
import os, sys

def _runningOnAndroid():
    Test if running on Android, GUI or not.  Python 3.X's sys.platform
    is 'linux' on Android: check env vars instead.  This is a heuristic
    (and feels like user-agent sniffing hacks in JavaScript), but works
    in both Termux and Pydroid 3.  The latter might also just catch an 
    import error for the Kivy module, but that won't work in some apps. 
    return any(key for key in os.environ if key.startswith('ANDROID_'))

# Import the following from this module for platform-specific code.
# RunningOnAndroid and RunningOnLinux are _both_ True on Android: to
# differentiate, test RunningOnAndroid first or use RunningOnLinuxOnly.

RunningOnAndroid    = _runningOnAndroid()
RunningOnLinux      = sys.platform.startswith('linux')
RunningOnLinuxOnly  = RunningOnLinux and not RunningOnAndroid

if __name__ == '__main__':
    print('On Android:   ', RunningOnAndroid)    # test
    print('On Linux:     ', RunningOnLinux)
    print('On Linux Only:', RunningOnLinuxOnly)

[Home page] Books Code Blog Python Author Train Find ©M.Lutz