How to open dialer in Android through Intent? - GeeksforGeeks

03 Nov, 2020
The phone dialer is an activity available with the Android operating system to call a number. Usually, such activity may or may not have an EditText, for taking the number as input, and a Call button. When the user presses the Call button, it invokes the dialer app activity. Use of ‘tel:’ prefix is recommended, else java.lang.IllegalStateException will be thrown. Action_Dial doesn’t require any permission. Below is the code for MainActivity file in both Java and Kotlin.
Java
Kotlin
package com.geeksforgeeks.gfg.dial;  // importing packagesimport android.content.Intent;import android.net.Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;  public class MainActivity extends AppCompatActivity {      @Override    protected void onCreate(Bundle savedInstanceState)     {        super.onCreate(savedInstanceState);          // Binding MainActivity.java with         // activity_main.xml file        setContentView(R.layout.activity_main);          }      // This function is called when button is clicked.    public  void Call(View v)    {        // Find the EditText by its unique ID        EditText e = (EditText)findViewById(R.id.editText);          // show() method display the toast with message         // "clicked"        Toast.makeText(this, "clicked", Toast.LENGTH_LONG)             .show();          // Use format with "tel:" and phoneNumber created is         // stored in u.        Uri u = Uri.parse("tel:" + e.getText().toString());          // Create the intent and set the data for the         // intent as the phone number.        Intent i = new Intent(Intent.ACTION_DIAL, u);          try        {            // Launch the Phone app's dialer with a phone             // number to dial a call.            startActivity(i);         }        catch (SecurityException s)        {            // show() method display the toast with             // exception message.            Toast.makeText(this, "An error occurred", Toast.LENGTH_LONG)                 .show();        }    }}
package com.geeksforgeeks.gfg.dial  import android.content.Intentimport android.net.Uriimport android.os.Bundleimport android.view.Viewimport android.widget.EditTextimport android.widget.Toastimport androidx.appcompat.app.AppCompatActivityimport com.example.gfgreviewinjava.R  class MainActivity : AppCompatActivity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)          // Binding MainActivity.java with        // activity_main.xml file        setContentView(R.layout.activity_main)    }      // This function is called when button is clicked.    fun Call(v: View?) {        // Find the EditText by its unique ID        val e = findViewById<View>(R.id.editText) as EditText          // show() method display the toast with message        // "clicked"        Toast.makeText(this, "clicked", Toast.LENGTH_LONG)                .show()          // Use format with "tel:" and phoneNumber created is        // stored in u.        val u = Uri.parse("tel:" + e.text.toString())          // Create the intent and set the data for the        // intent as the phone number.        val i = Intent(Intent.ACTION_DIAL, u)        try {            // Launch the Phone app's dialer with a phone            // number to dial a call.            startActivity(i)        } catch (s: SecurityException) {            // show() method display the toast with            // exception message.            Toast.makeText(this, "An error occurred", Toast.LENGTH_LONG)                    .show()        }    }}
In order to make a direct call without switching into dialer activity, you need to add Intent.ACTION_CALL in place of Intent.ACTION_DIAL.activity_main.xml 
XML
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:app="http://schemas.android.com/apk/res-auto"      <!-- covers entire width of the screen -->    android:layout_width="match_parent"      <!-- covers entire height of the screen -->    android:layout_height="match_parent"      tools:context="com.example.hp.dial.MainActivity">      <EditText        android:id="@+id/editText"        <!-- covers as much width as required. -->        android:layout_width="wrap_content"          <!-- covers as much height as required. -->        android:layout_height="wrap_content"          <!-- left spacing from the parent layout-->        android:layout_marginLeft="8dp"          <!-- right spacing from the parent layout-->        android:layout_marginRight="8dp"          <!-- top spacing from the parent layout-->        android:layout_marginTop="65dp"          <!-- hint works as a place holder -->        android:hint="Phone No."          <!-- Expressing the given input should be phone no -->        android:inputType="phone"          app:layout_constraintHorizontal_bias="0.503"        app:layout_constraintLeft_toLeftOf="parent"        app:layout_constraintRight_toRightOf="parent"        app:layout_constraintTop_toTopOf="parent" />      <Button        android:id="@+id/button"          <!-- covers as much width as required. -->        android:layout_width="wrap_content"          <!-- covers as much height as required. -->        android:layout_height="wrap_content"          android:layout_marginLeft="8dp"        android:layout_marginRight="8dp"        android:layout_marginTop="67dp"          <!-- name of function is Call, and it is -->        <!-- invoked when the button is clicked.-->        android:onClick="Call"          android:text="DIAL"          <!-- below are the positions of the button -->        <!-- with respect to editText and parent layout. -->        app:layout_constraintLeft_toLeftOf="parent"        app:layout_constraintRight_toRightOf="parent"        app:layout_constraintTop_toBottomOf="@+id/editText"    /></android.support.constraint.ConstraintLayout>
In AndroidManifest.xml, include the below permission to directly call without opening in a dialer. To make a call through open in a dialer, below permission is not needed.  
uses-permission android:name="android.permission.CALL_PHONE"
 
Figure 1. Enter Phone no.
 
Figure 2. Open the dialer activity.
 
AmiyaRanjanRout
android
Android
Java
Java
Android
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to Create and Add Data to SQLite Database in Android?
Broadcast Receiver in Android With Example
Resource Raw Folder in Android Studio
Services in Android with Example
Android RecyclerView in Kotlin
Arrays in Java
Split() String method in Java with examples
For-each loop in Java
Object Oriented Programming (OOPs) Concept in Java
Arrays.sort() in Java with examples