3

Eclipse経由で起動されるアンドロイドエミュレータに引数を渡したいと思います。この引数は、私が接続するサーバのアドレスが "localhost"か "myserverdomain.com"かを判断するために使用するカスタムのものです。これは、プロダクションやローカルテスト環境でプログラムを実行するたびに、同じプログラムの2つのバイナリまたは2つのバージョンを持つことを望まないためです。Androidエミュレータに渡されるカスタム引数/変数

普通のJavaでは、コマンドライン引数を使用してmain()で検索したり、カスタム環境変数を使用してSystem.getProperty()で取得することができます。

Androidで類似の機能が見つかりません。何か知っていますか?

+0

はあなたが見つけるためにしようとしている情報は、あなたがしているかどうかはです。エミュレータまたは実デバイス上のデバイス名、デバイスのホスト名? –

+0

いいえ私自身の変数 – Joel

答えて

6

これは可能ですが、私はEclipse経由でやろうとしていません。

コマンドラインから、adbを使用してa shellを起動し、パラメータを指定してアプリケーションを実行できます。例えば

adb shell am start -a android.intent.action.MAIN -n org.caoilte.MyActivity -e SOME_KEY some_value -e SOME_OTHER_KEY some_other_value 

が、私はそうのようなバンドルから抽出することができます余分に私の活動を開始します、

public class MyActivity extends Activity { 

protected void onStart() { 
    super.onStart(); 


    String someKey = null; 
    String someOtherKey = null; 

    Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     jsEnv = extras.getString("SOME_KEY"); 
     serverEnv = extras.getString("SOME_OTHER_KEY"); 
    } 
} 
1

デバイスにインストールするようなアプリをデバッグするためにエミュレータを起動するとき。エミュレータは、あなたのアプリを実行するためのメカニズムではなく、ほとんどの携帯電話です。 main(String[])が存在しないため、コマンドラインオプションを作成してアプリケーションに渡すためのコマンドラインオプションを作成すると、コマンドラインオプションをいつどのように提供するのかについていくつかのオプションが必要になります。

実行するサーバーを複数の異なる方法で実現することができます。まず、String resourceと設定できます。次に、実行中のデバイスをBuild.PRODUCTと他のBuildの値で検出できます。 NetworkInterfaceを使用していくつかのオプションもあります。さらに、あなたがAlertDialogまたはListPreferencedebuggingをトリガーとして決定させることができるあなたのアプリを開発している理由。

+0

を渡す必要があります。それは私がやりたくないものです – Joel

+0

エミュレータのコマンドラインからエミュレータのコマンドライン引数を使ってエミュレータのコマンドライン引数を渡すか、環境変数を設定するメカニズムはありません。 –

+0

お答えいただきありがとうございます – Joel

関連する問題