3

我想將參數傳遞給通過Eclipse啓動的Android模擬器。這個參數是一個自定義的參數,用於確定要連接的服務器的地址是「localhost」還是「myserverdomain.com」。這是因爲我不想在同一個程序中有兩個二進制文件或兩個版本,只要我在生產環境或本地測試環境中運行該程序。傳遞給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的選項。此外,爲什麼你正在開發你的應用程序,你可以讓用戶選擇AlertDialogListPreferencedebugging作爲觸發器。

+0

這不是我想要做的 – Joel

+0

沒有機制通過模擬器的命令行將模擬器命令行參數傳遞給應用程序或設置環境變量。 –

+0

好的,謝謝你的回答 – Joel

相關問題