【问题标题】:How do I get the country code of a user on Android?如何在 Android 上获取用户的国家代码?
【发布时间】:2011-11-07 06:54:59
【问题描述】:

如何在 Android 上检索用户的国家/地区代码?我需要权限吗?

【问题讨论】:

    标签: java android localization geolocation


    【解决方案1】:

    您可以尝试以下功能。它正在返回您所在国家/地区的 ISO 代码:

      TelephonyManager telephonyManager = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
    
            public String getSimCountryIso() {
    
        return telephonyManager.getSimCountryIso();
    
    }
    

    将以下权限添加到您的AndroidManifest.xml 文件中。

     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    

    【讨论】:

      【解决方案2】:

      最佳实践来自:Localization documentation 建议使用此处设置的语言环境:

      context.getResources().getConfiguration().locale;
      

      此外,还提到了这个字段here。然后,您可以对其调用 getCountry() 以获取 ISO 3166-1 定义的两个大写字母 ISO 国家/地区代码。 注意 java 文档说如果 Locale 与特定国家不对应,它可能会返回一个空字符串。

      【讨论】:

        【解决方案3】:

        要获取手机sim卡中存储的国家代码,你可以试试

        TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
        telephonyManager.getSimCountryIso();
        

        你也可以试试:

         Locale locale = Locale.getDefault();
         locale.getCountry();
        

        这会返回来自用户声明的语言/国家/地区的数据,而不是实际位置。

        【讨论】:

        • 我没有得到这样的答案。 wifi设备呢?没有 sim 卡的设备怎么办?带有 SIM 卡但在国外的设备呢?
        【解决方案4】:

        Latitude and Longitude of the current location

        会得到你的纬度和经度。

        我建议使用谷歌地图的反向地理编码来获取国家,然后如果你想获取一些国家代码(我假设国家的电话代码,但我可能是错的),然后使用查找表。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-05
          • 1970-01-01
          相关资源
          最近更新 更多