Android устанавливает (получает) переменные среды в Java - PullRequest
8 голосов
/ 29 сентября 2011

Я мало экспериментировал с ОС Android и пытался вызвать System.getenv(), чтобы получить переменные среды. Это работает, например. для $PATH, но я не смог определить собственную переменную, которая может быть доступна таким образом ... Возможно ли это?

Я пытался установить и export переменные из оболочки adb как пользователь shell, но это не работает - независимо от того, запустил ли я приложение из меню телефона или когда использовал команду adb shell am .

Может ли Runtime.getRuntime().exec() помочь там? Поможет ли мне, если у меня будет root доступ к телефону?

Спасибо

Ответы [ 3 ]

7 голосов
/ 30 сентября 2011

Переменные среды видны только в процессе, который устанавливает переменную, а дочерние процессы запускаются после установки переменной.Когда вы устанавливаете переменную среды из оболочки adb, вы не находитесь в родительском процессе процесса, который запускает приложение Android, поэтому приложение не может видеть установленную вами переменную.

В Java (и Android) естьнет System.setenv(), но если вам нужно установить переменную окружения для чтения вашей собственной программы, всегда найдутся лучшие способы.Одним из таких способов является установка и получение взамен свойств .

Установка переменных среды в Java на самом деле невозможна (ну, это так, но вы не хотите этого делать).Вы можете использовать ProcessBuilder , если хотите установить переменную, которую должен прочитать другой процесс, но это если процесс запущен из программы на Java / Android.

Подумайте, с какой проблемой вы столкнулисьпытаясь решить, и если это можно сделать без использования переменных среды.Они не очень подходят для Java и еще хуже для Android.

4 голосов
/ 23 августа 2014

Возможно установить переменные среды в приложениях Android.Однако, как сказал @richq, эти переменные будут видны только в процессах, запускаемых из приложения, в котором установлена ​​переменная среды (и библиотек JNI, используемых приложением).См. Этот пост о настройке переменных среды из приложения Android: https://stackoverflow.com/a/22315463/927592

0 голосов
/ 24 июня 2019

Android API 21 предоставляет способ установки переменных среды.Чтобы установить переменную среды, вызовите Os.setenv.

См. Эту android.system.Os документацию и эту setenv (3) документацию.

Каждый процесс имеет свою собственную среду, которая копируется из среды родительского процесса.Таким образом, переменные среды относятся к каждому процессу.

...