2012-07-17 28 views
1

我已經發布了可在英國下載的Android應用程序,但是我希望爲美國發布該應用程序的(非常不同的)版本。目前我相信我需要爲新版本的應用程序執行以下操作...如何在不同的位置發佈我的Android應用程序的幾乎相同的版本

1.將清單文件中的'package'屬性更改爲不同的內容。

2.確保在Google Play上只有美國可以下載應用程序。

還有什麼我還沒有發現我需要做的,或者我還沒有考慮的其他問題?

編輯7月19日13:19 GMT - 我目前對氣候變暖使用TelephonyManager.getNetworkCountryIso()作爲初始國家的猜測,並在現場回落如果失敗(因爲沒有SIM卡)。人們認爲什麼?使用GPS也是一種選擇,但是這是否過度殺傷?

+0

我以前做過,看起來正確。只需更改代碼就可以得到軟件包名稱。 – 2012-07-17 14:32:47

+0

我能問一下有什麼不同嗎?這可能是您可以使用資源文件夾或代碼完成的事情,這可以簡化相當多的事情。 – kcoppock 2012-07-17 15:22:16

+0

嗨kcoppock。出現在屏幕上的幾個字符串發生了變化,並且該應用程序指出了一個至關重要的URL。嗯,你對資源文件夾做了一個有趣的觀點,這可能是我沒有完全研究或考慮過的事情?在英國有人可能會將手機設置更改爲「美國」,從而使用我的應用程序的錯誤版本? – 2012-07-17 15:28:40

回答

0

我最終決定,最好的策略是使用TelephonyManager來檢查網絡的國家。

TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 
String networkCountryCode = tm.getNetworkCountryIso(); 

如果失敗了,我得到了語言環境。

String locale = context.getResources().getConfiguration().locale.getCountry(); 

這會發生一次在應用程序的開始。這些結果將被保存並可在設置屏幕中進行配置。

0

這是正確的。 Play商店有兩件事可以下載,如果可以更新的話。第一個是packagename com.andya.myukapp - > com.andya.myusapp應該可以工作,只要沒有一個現有客戶希望在兩者之間自由切換(假設它是付費應用程序)

1

既然你說你只是改變幾個字符串(我們認爲URL只是一個字符串,太),我建議如下:

  1. 創建資源目錄res/valuesres/values-en-rUS

  2. 在每個這些,創建strings.xml resource file

  3. 定義在res/values目錄默認(UK特定)的字符串值,並在res/values-en-rUS文件夾中的美國特定的字符串值。

然後,把這些字符串,只是從代碼中引用它們時從XML文檔,或getResources().getString(R.string.my_string_name)提到他們時,使用@string/my_string_name

有關資源限定符類型的更多詳細信息,請查看this page,也可以使用可用的合格國家代碼列表,請參閱this page

我確定任何人都有足夠的決心可以將他們的地區改變爲美國 - 老實說,我不確定這個地區是如何決定的 - 但是對於所有意圖和目的,這應該可以做到這一點,而不必保持兩個單獨的應用。我只想評估英國用戶無法訪問美國應用程序的特定功能的重要性,並考慮到這一點,確定是否值得維護兩個應用程序。

編輯一些更多的額外的搜索使我相信,該區域被鎖定在build.prop文件,這是不生根設備的編輯外(即,它不會意外發生)。也就是說,如果他們有正確的選擇仍然是必要的,我可能會建議一個彈出式對話框,只在應用程序的第一次運行中確認用戶的語言環境,將其保存爲SharedPreference,然後根據該偏好。這樣你仍然只需要維護一個應用程序,但是你仍然可以靈活地處理這兩個區域。

+0

謝謝kcoppock。這是我肯定會幫助很多人的很好的答案。然而,爲了我的需要,美國和英國的客戶總是希望訪問他們各自的應用版本。如果他們不這樣做,應用程序中的錯誤URL將被使用,造成混亂。然而,正如你所說,你的解決方案比維護兩個版本的應用程序更易於管理,所以我的決定完全取決於用戶可能(容易混淆地)改變他們的區域(我還不明白)。 – 2012-07-18 08:52:25

+0

在我的手機上,我可以通過'設置 - >語言和鍵盤'輕鬆更改語言。但是,我只是將「英語」視爲一種選擇,而不是「美國英語」或「英國英語」。如果這與改變區域一樣,那麼你的解決方案不幸的是不適用於我。但是,如果有其他方式來改變這個地區,我還沒有發現或理解它。 – 2012-07-18 08:57:10

+0

我現在在想,如果資源文件依賴於語言的變化而不是地區的變化,那麼這是不好的,因爲美國居民可能會用不同的語言說話。所以我不需要檢測區域。這可以做到嗎?我唯一的選擇是在安裝時檢測應用程序的ACTUAL區域,並使用它? – 2012-07-18 11:49:16

相關問題