我对 Android 操作系统进行了一些试验,我尝试调用 System.getenv()
来获取环境变量。它有效,例如对于 $PATH
,但我无法定义自己的变量,可以通过这种方式访问它...这可能吗?
我尝试以 shell
用户身份从 adb shell 设置和export
变量,但它不起作用 - 无论我是从手机菜单启动应用程序还是当我使用 adb shell am
命令时。
Runtime.getRuntime().exec()
有帮助吗?如果我拥有手机的 root
权限会有帮助吗?
谢谢
最佳答案
环境变量仅在设置变量的进程中可见,并且在设置变量后启动子进程。当您从 adb shell 设置环境变量时,您不在启动 Android 应用程序的进程的父进程中,因此应用程序看不到您设置的变量。
在 Java(和 Android)中没有 System.setenv()
,但是如果您需要为自己的程序设置一个环境变量来读取,总有更好的方法。一种这样的方式是 setting and getting Properties相反。
在 Java 中设置环境变量是不可能的(好吧,它是,但你不想这样做)。您可以使用 ProcessBuilder如果您想设置另一个进程应读取的变量,但前提是该进程是从 Java/Android 程序启动的。
想想您要解决什么问题,以及是否可以在不使用环境变量的情况下完成。它们不太适合 Java,在 Android 上更糟糕。
关于Android 在 Java 中设置(获取)环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7597058/