wjc
2025-04-09 0b357bcd7c472c91227093239f180a28638c57a4
countrypicker/src/main/java/com/sahooz/library/countrypicker/Country.java
@@ -1,8 +1,16 @@
package com.sahooz.library.countrypicker;
import android.Manifest;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationManager;
import android.text.TextUtils;
import android.util.Log;
@@ -13,9 +21,12 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
/**
@@ -99,6 +110,10 @@
        JSONArray ja = new JSONArray(sb.toString());
        for (int i = 0; i < ja.length(); i++) {
            JSONObject jo = ja.getJSONObject(i);
            if (jo.getInt("code") == 886) {
                //过滤掉台湾省
                continue;
            }
            int flag = 0;
            String translate = "";
            String locale = jo.getString("locale");
@@ -109,6 +124,7 @@
            String name = jo.getString("name");
            Locale defaultLoc = Locale.getDefault();
            boolean inChina = "zh".equalsIgnoreCase(defaultLoc.getLanguage());
            countries.add(
                new Country(
                    jo.getInt("code"),
@@ -122,6 +138,41 @@
        }
        Collections.sort(countries, (o1, o2) -> o1.getPinyin().compareTo(o2.getPinyin()));
    }
    /**
     * 获取当前的国家区号(基于用户设置的语言和地区获取国家码)
     *
     * @return Country
     */
    public static Country getCountryInfo() {
        String countryCode = Locale.getDefault().getCountry();
        for (Country country : countries) {
            if (country.locale.equals(countryCode)) {
                return country;
            }
        }
        return null;
    }
    /**
     * 获取当前的国家区号(根据定位荻取国家编码)
     *
     * @return Country
     */
    public static Country getLocationCountryInfo(String countryCode) {
        if (TextUtils.isEmpty(countryCode)) {
            return null;
        }
        for (Country country : countries) {
            if (country.locale.equals(countryCode)) {
                return country;
            }
        }
        return null;
    }
    public static void destroy() {
@@ -133,7 +184,8 @@
        return code;
    }
    @NonNull @Override
    @NonNull
    @Override
    public String getPinyin() {
        return pinyin;
    }