Skip to content

Android Kotlin library to parse and format international phone numbers. Country code picker.

License

Notifications You must be signed in to change notification settings

KDVL/PhoneNumberKit

 
 

Repository files navigation

PhoneNumberKit

Android Kotlin library to parse and format international phone numbers. Based on Google's libphonenumber library.

Disclamer

  • This is a forked project fixing "Austrian Phone Number Length #14".
  • This forked repository will be deleted if the pull request #39 is accepted and merged.
  • Temporary version KDVL:2.0.7 can be used.

Features

Features
☎️ Validate, normalize and extract the elements of any phone number string.
🎯 Convert raw phone number to formatted phone number string.
🔍 Automatically detects country flag of the phone number.
🔖 Country code selection bottom sheet.
📌 Convert country codes to country names and vice versa.
🇹🇷 Get country flag icon for given iso2 code.

Usage

Create a phoneNumberKit instance and attach it to an editTextLayout. That's all you have to do.

val phoneNumberKit = PhoneNumberKit.Builder(this)
    .setIconEnabled(true)
    .admitCountries(listOf("tr", "ca", "de")) // List only those county formats
    .excludeCountries(listOf("tr", "ca")) // Exclude those county formats
    .build()

phoneNumberKit.attachToInput(textField, "tr")
// OR
phoneNumberKit.attachToInput(textField, 1)

To setup with country code selection bottom sheet

phoneNumberKit.setupCountryPicker(this) // Requires activity context

To get an example phone number for given iso2 code

val exampleNumber = phoneNumberKit.getExampleNumber("tr")

To parse raw text to phone number and receive country code, national number

val parsedNumber = phoneNumberKit.parsePhoneNumber(
    number = "1266120000",
    defaultRegion = "us"
)

parsedNumber?.nationalNumber
parsedNumber?.countryCode
parsedNumber?.numberOfLeadingZeros

To convert raw text to formatted phone number string

val formattedNumber = phoneNumberKit.formatPhoneNumber(
    number = "1266120000",
    defaultRegion = "us"
)

To receive a country flag icon for given iso2 code

val flag = phoneNumberKit.getFlagIcon("ca")

Usage with Custom Item Layout

Add your custom item layout resource as a parameter

phoneNumberKit.setupCountryPicker(this, R.layout.my_item_layout, searchEnabled = true)

You need to use below view ids in your layout file

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingVertical="12dp"
    android:paddingHorizontal="18dp"
    android:clickable="true"
    android:focusable="true"
    android:background="?android:attr/selectableItemBackground">

    <ImageView
        android:id="@+id/imageViewFlag"
        android:layout_width="22dp"
        android:layout_height="22dp" />

    <TextView
        android:id="@+id/textViewName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        android:singleLine="true"
        android:maxLines="1"
        android:ellipsize="end"
        android:textSize="16sp"
        android:textColor="#232425" />

    <TextView
        android:id="@+id/textViewCode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:textColor="#838383" />

</LinearLayout>

Demo

Country Code Picker Format Example Format Example

Installation

Follow me on Twitter @ibrahimsn98

Step 1. Add the JitPack repository to your build file

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

Step 2. Add the dependency

dependencies {
    implementation 'com.github.KDVL:PhoneNumberKit:2.0.7'
}

Checklist

  • Search for country codes
  • Custom list item layout support
  • Better performance with coroutines
  • Phone number validation indicator
  • Dark theme
  • Tests

Conception

License

PhoneNumberKit is available under the Apache license. See the LICENSE file for more info.

About

Android Kotlin library to parse and format international phone numbers. Country code picker.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Kotlin 100.0%