Search code examples
androidphone-call

Android dialer application


I am figuring out a way to replace the default dialer application from my custom dialer application, but I am not getting how to achieve this.

Here is what I want

  • Create a custom dialer UI
  • My application is called whenever call button hardware or that one in Android is pressed
  • The application can also be called from the contact screen

I am referring to public static final String ACTION_DIAL.


Solution

    1. Create a simple Android application (our dialer). To actually call someone, you just need that method:

      private void performDial(String numberString) {
          if (!numberString.equals("")) {
             Uri number = Uri.parse("tel:" + numberString);
             Intent dial = new Intent(Intent.ACTION_CALL, number);
             startActivity(dial);
          }
      }
      
    2. Give your application permission to call in AndroidManifest

      <uses-permission android:name="android.permission.CALL_PHONE" />
      
    3. Set in AndroidManifest intention that says to your phone to use your app when need a dialer

    When someone press the call button:

        <intent-filter>
            <action android:name="android.intent.action.CALL_BUTTON" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    

    When someone fire an URI:

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.DIAL" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="tel" />
        </intent-filter>