A reusable dialer implementation extracted from AOSP.
Here is the demo screenshot:
Step 1: Install it
repositories {
jcenter()
}
implementation 'im.dlg:android-dialer:1.2.5'
Step 2: Usage
Within fragment
Just add the DialpadFragment
into your activity and make sure the activity implements
DialpadFragment.Callback
:
interface Callback {
void ok(String formatted, String raw);
}
The formatted string contains the input as it displayed to user (+1 555-546-0001) and the raw
string contains characters only (+15555460001).
Or Via startActivityForResult
Intent intent = new Intent(context, DialpadActivity.class);
startActivityForResult(intent, 100); // any result request code is ok
And then in your onActivityResult
:
@Override
override void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
String formatted = data.getStringExtra(DialpadActivity.EXTRA_RESULT_FORMATTED);
String raw = data.getStringExtra(DialpadActivity.EXTRA_RESULT_RAW);
...
}
}
Configuration
Whether you're using a fragment or an activity, you can provide configuration via extras.
For a fragment use setArguments
, and for activity use intent extras.
Arguments are:
1) EXTRA_REGION_CODE
(string): Region code for the phone formatter. Default is US
.
2) EXTRA_FORMAT_AS_YOU_TYPE
(boolean): Enable phone formatting. If disabled, both formatted
and
raw
results will be the same. Default is true
.
3) EXTRA_ENABLE_STAR
(boolean): Will show the 'star' symbol. Default is true
.
4) EXTRA_ENABLE_POUND
(boolean): Will show the 'pound' symbol. Default is true
.
5) EXTRA_ENABLE_PLUS
(boolean): Will show the 'plus' symbol. Default is true
.
6) EXTRA_CURSOR_VISIBLE
(boolean): Will show the cursor in the digits EditText
. Default is false
.
Styles
The dialer is styled using android theme colors; the button color is colorAccent
and digits color is colorPrimary
.
Reference
Read more here.