2011-09-29 21 views
7

私はAndroid OSで少し実験しましたが、System.getenv()に電話して環境変数を取得しようとしました。例: $PATHについては、私は自分の変数を定義することができませんでした。この方法でアクセスできるようになりました...可能ですか?AndroidでJavaの環境変数を設定しました

私はshellユーザーとしてのadbシェルから変数を設定し、exportしようとしたが、それは動作しません - に関係なく、私は携帯電話のメニューからアプリケーションを起動した場合は、私はadbのシェルamコマンドを使用する場合。

Runtime.getRuntime().exec()はそこに助けてもらえますか?携帯電話へのアクセスがrootになると手伝ってくれますか?

おかげ

+0

[Os.getenv()](http://developer.android.com/reference/android/system/Os.html#getenv(javaの。 – Paschalis

答えて

7

環境変数は、変数を設定した後打ち上げ変数、および子プロセスを設定し、プロセスでのみ表示されます。 adbシェルから環境変数を設定すると、Androidアプリケーションを起動するプロセスの親プロセスにはないので、アプリケーションは設定した変数を認識できません。

Java(およびAndroid)では、System.setenv()はありませんが、自分のプログラムの環境変数を設定する必要がある場合は常に良い方法があります。そのような方法の1つはsetting and getting Propertiesです。

Javaで環境変数を設定することは実際には不可能です(ただし、そうしていますが、実行したくありません)。他のプロセスが読み込むべき変数を設定したいのであれば、ProcessBuilderを使うことができますが、そのプロセスはJava/Androidプログラムから起動します。

あなたが解決しようとしている問題について考え、環境変数を使用せずに実行できるかどうかを考えます。彼らはJavaにうまく適合しておらず、Androidではさらに悪いです。

+1

)環境変数を避けるべきだと合意しましたが、正当なものがあります。環境変数を設定する理由(たとえば、それに依存するネイティブライブラリとのインタフェースをとっている場合)。あなたはJavaで可能だが、例を挙げていないと答えていますか? –

4

は、Androidアプリケーションで環境変数を設定することができます。しかし、@richqが述べたように、これらの変数は、環境変数(およびアプリケーションによって使用されるJNIライブラリ)を設定したアプリケーションから起動されるプロセスでのみ表示されます。 Androidアプリケーションから環境変数を設定することについては、この記事を参照してください。 https://stackoverflow.com/a/22315463/927592

関連する問題