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.
-
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); } }
-
Give your application permission to call in AndroidManifest
<uses-permission android:name="android.permission.CALL_PHONE" />
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>
This worked for me:
<activity
android:name=".activities.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- open activity when establishing a call -->
<intent-filter>
<action android:name="android.intent.action.CALL_PRIVILEGED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="tel" />
</intent-filter>
</activity>