2013-07-22 110 views
0

IM建設,需要國家的用戶在應用程序中,我沒有問題,得到了國家,如果用戶使用的是智能手機與國家位置的Nexus 7

telephonyManager.getNetworkCountryIso() 

,但我怎麼能如果達到這個他們沒有使用模擬器,即一個nexus 7?

任何幫助,將不勝感激

感謝

+0

Nexus 7不是智能手機,並且無法撥打或發送短信,所以我不認爲該選項可用於該設備。 – hardartcore

+0

我知道它不是智能手機,我有一個...我也知道它沒有sim..hehe問題 –

回答

1

試試這個,以檢查用戶是否是在平板電腦或手機上:

TelephonyManager telephonyManager1 = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 

if(telephonyManager1.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE) { 
    // TABLET 
} 
else { 
    // YOUR PREVIOUS CODE 
} 

也許你可以用試區域設置,如果用戶在平板電腦中?我知道這不會給你的位置,但也許你可以嘗試根據區域的用戶必須找出:

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

希望它能幫助!

+0

Locale不會給你當前的位置。 –

+0

不知道是誰給你的-1,但我沒有說過解決方案是錯誤的。 ;) –

+0

不理解-1 ... –

0

您可以獲取用戶位置(粗略近似值應該足夠),然後使用Geocoder查找近似地址以確定國家/地區。

其實,你的問題類似於this之一。

但是在Android中,您現在獲得了內置的Geocoder,因此無需專門調用Web服務並解碼json。有關如何獲取用戶位置的信息,請參閱Location Guide,關於如何獲取位置信息,請參閱Geocoder API

0

個人而言,我的邏輯延伸到這樣的事情:

  • 使用TelephonyManager
  • 如果沒有調制解調器/ SIM存在,use WiFi
  • 如果沒有調制解調器/ SIM存在,和WiFi是殘疾人,use GPS
  • 如果沒有調制解調器/ SIM存在和WiFi和GPS失效,use Locale

這樣你就可以覆蓋儘可能多的場景。

NB區域設置不會爲您提供當前所在的國家/地區,而是取決於您的Android設備中選擇的語言。也就是說,如果你的手機是俄文的,你會總是得到俄羅斯。

+0

-1用於提示區域設置作爲位置的替代。 http://stackoverflow.com/a/7976432/319204 – TheCodeArtist

+0

哦,真的嗎? :-)請告訴我其他選項,如果設備沒有任何可能性來獲取位置(沒有調制解調器,沒有WiFi,沒有GPS)? –

+0

用關於使用語言環境的說明更新了我的回答。 –