2012-06-11 45 views
0

中的服務器應用程序我需要一個解決方案來解決我正在考慮的真正常見但重要的問題。如何設置應用程序無關的參數,如android

我已經創建了應用程序,其中我已經在/res/values/strings.xml文件中硬編碼了我的服務器地址。假設如果我的服務器地址由於某些原因而改變運行時間,那麼我必須對文件進行更改,然後我必須重新編譯它。

所以有什麼辦法,我把我的服務器地址從我的應用程序中。因此,我們不必重新編譯應用程序。相反的,它會從出側讀取新的服務器地址,並恢復其正常的工作......

任何類型的相關建議,鏈接,博客感激..

+0

您的通話服務器地址,是它只IP還是可以藏漢更改域名? 如果你不知道它在運行時位於何處,那麼很難得到這些信息...... –

+0

這是域名,如果服務器發生故障,在一個域中發生變化,那麼我只需更改服務器名稱,而不是改變代碼本身..所以我想我在哪裏把這個地址..以及它應該如何更新..所以我的apk將獨立於服務器地址 – NullPointerException

+0

所以硬編碼2地址? 你真的無法做到這一點在空氣afaik。否則,你需要像谷歌這樣穩定的供應商提供某種服務來獲得它。 –

回答

0

我通過閱讀this博客得到了答案。

其中說你應該使用分片首選項和活動延伸PreferenceActivity。

在這裏,您可以設置您的服務器地址以及隨時間變化的所有動態內容。這樣你就不必重新編譯apk。只需更改共享首選項中的設置即可。

閱讀所有應用開發人員想知道這個重要的沼澤..

1

雖然我在做Android的應用程序,我大多創建一個Utility類,例如Constants.java,Utils.java等。在這些課程,我把所有的常數的數值和字符串值是這樣的:

public static String ip="74.117.153.111"; 
    public static final String LOGIN_TOKEN_URL = "http://"+ ip + "/api/getLoginToken"; 
    public static final String USERNAME_PARAM = "username"; 
    public static final String PASSWORD_FIELD_EMPTY_ERROR = "Please enter password"; 
    public static final int GRID_ICON_COUNT = 4; 
    public static final String FACEBOOK_KEY = "16411636362877862"; 

這些都是一些類型的我們一般用在這裏和那裏的常量。所以我把它們放到不同的專門課上。所以,現在,當我需要他們的價值的地方,我得到這樣的:

params.put(Constants.USERNAME_PARAM, username); 
fbRocket = new FBRocket(this, Constants.APP_NAME,Constants.FACEBOOK_KEY); 

這種方法的好處是,如果我以後改變值在其上,在很多地方使用,那麼我不不必在任何地方改變它。我只需更改Constants.java中的值,並且此更改將在整個應用程序中複製。

Utils.showErrorMessage(this, Constants.PASSWORD_FIELD_EMPTY_ERROR, Constants.TOAST_VISIBLE_SHORT); 
+0

如果這就是他的意思,那麼我顯然誤解了他:-) –

相關問題