【问题标题】:Get incoming call country name using phone number? [duplicate]使用电话号码获取来电国家/地区名称? [复制]
【发布时间】:2011-07-21 08:28:02
【问题描述】:

您好,有什么方法可以在安卓手机上获取来电的国家名称?

【问题讨论】:

    标签: android


    【解决方案1】:

    使用libphonenumber

    public String convertPhoneNumber(String phoneNumber, PhoneNumberUtil.PhoneNumberFormat format) {
        String resultNumber = "";
        Phonenumber.PhoneNumber myNumberProto = null;
        PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
        if (!phoneNumber.substring(0, 1).equals("+")) {
            try {
                myNumberProto = phoneUtil.parse(phoneNumber,
                        Locale.getDefault().getCountry().toUpperCase());
                resultNumber = phoneUtil.format(myNumberProto,
                        format);
            } catch (NumberParseException e) {
                System.err.println("NumberParseException was thrown: " + e.toString());
            }
        } else {
            try {
                myNumberProto = phoneUtil.parse(phoneNumber, "ZZ");
                resultNumber = phoneUtil.format(myNumberProto,
                        format);
            } catch (NumberParseException e) {
                System.err.println("NumberParseException was thrown: " + e.toString());
            }
        }
    
        return resultNumber;
    }
    
    
    public String getRegionOfPhoneNumber(String callNumber) {
        PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
        Phonenumber.PhoneNumber myNumberProto = null;
        callNumber = convertPhoneNumber(callNumber, PhoneNumberUtil.PhoneNumberFormat.E164);
        try {
            myNumberProto = phoneUtil.parse(callNumber, "ZZ");
        } catch (NumberParseException e) {
            e.printStackTrace();
        }
        String result = "";
        if (myNumberProto != null) {
            result = phoneUtil.getRegionCodeForCountryCode(myNumberProto.getCountryCode());
        }
        return result;
    }
    
    public String getCountryNameOfPhoneNumber(String callNumber) {
        String result = "";
        String regionCode = getRegionOfPhoneNumber(callNumber);
        if (!regionCode.equals("")) {
            result = new Locale("", regionCode).getDisplayCountry(Locale.getDefault());
        }
        return result;
    }
    

    用法: getCountryNameOfPhoneNumber("电话号码");

    希望这对某人有所帮助

    【讨论】:

      猜你喜欢
      • 2018-02-22
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多