I don’t need to call the phone number, I just need the dialer to open with the phone number already displayed. What
Intent should I use to achieve this?
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Two ways to achieve it.
1) Need to start the dialer via code, without user interaction.
use below code it will open Dialer with number specified
Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:0123456789")); startActivity(intent);
The ‘tel:’ prefix is required, otherwhise the following exception will be thrown:
java.lang.IllegalStateException: Could not execute method of the activity.
Action_Dial doesn’t require any permission.
If you want to initiate the call directly without user’s interaction , You can use action
Intent.ACTION_CALL. In this case, you must add the following permission in your AndroidManifest.xml:
<uses-permission android:name="android.permission.CALL_PHONE" />
2) Need user to click on Phone_Number string and start the call.
You need to use TextView with below property.
android:linksClickable=”true” a textView property
You don’t need to use intent or to get permission via this way.
Pretty late on the answer, but if you have a
TextView that you’re showing the phone number in, then you don’t need to deal with intents at all, you can just use the XML attribute
android:autoLink="phone" and the OS will automatically initiate an
Okay, it is going to be extremely late answer to this question. But here is just one sample if you want to do it in Kotlin.
val intent = Intent(Intent.ACTION_DIAL) intent.data = Uri.parse("tel:<number>") startActivity(intent)
Thought it might help someone.
As @ashishduh mentioned above, using
android:autoLink="phone is also a good solution. But this option comes with one drawback, it doesn’t work with all phone number lengths. For instance, a phone number of 11 numbers won’t work with this option. The solution is to prefix your phone numbers with the country code.
08034448845 won’t work
<TextView android:id="@+id/phoneNumber" android:autoLink="phone" android:linksClickable="true" android:text="+91 22 2222 2222" />
This is how you can open EditText label assigned number on dialer directly.
You can call Intent following this:
String number = "0123456789"; Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:" + number)); startActivity(intent);
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0