Как программно открыть панель набора номера в Android?

Я хочу отображать клавиатуру набора номера (телефонный звонок) программно при нажатии кнопки в android. Код доступен для прямого набора номера, но мне нужно только показать клавиатуру набора номера, когда я нажимаю кнопку.


person Addon_Android    schedule 09.11.2012    source источник


Ответы (7)


Вы можете использовать этот код, если хотите программно открыть номеронабиратель без вставки номера:

Java

Intent intent = new Intent(Intent.ACTION_DIAL);
startActivity(intent);

Котлин

val intent = Intent(Intent.ACTION_DIAL)
startActivity(intent)

Если вам нужно открыть номеронабиратель с уже набранным номером, вы можете использовать этот код:

Java

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:123 456789"));
startActivity(intent);

Котлин

val intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:123 456789")
startActivity(intent)
person MrYanDao    schedule 09.11.2012

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:9999999999"));
startActivity(intent); 

Для этого нам не нужно добавлять какие-либо разрешения в AndroidManifest.xml.

person Kishore Kumar    schedule 15.07.2015
comment
Для ACTION_DIAL нам не нужно разрешение CALL_PHONE. Это нужно только для ACTION_CALL - person Mani; 25.08.2015

Intent intent =  new Intent(Intent.ACTION_CALL_BUTTON);
startActivity(intent);

в окне набора номера будет отображаться здесь для получения информации.

person Deepak Samuel Rajan    schedule 09.11.2012

Сделайте кнопку или пример любого виджета: button1

  button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent callIntent = new Intent(Intent.ACTION_DIAL);
            callIntent.setData(Uri.parse("tel:"+button1.getText().toString().trim()));
            startActivity(callIntent);

        }
    });

Добавить разрешение в манифест:

 <uses-permission android:name="android.permission.CALL_PHONE" />
person Hanisha    schedule 12.03.2018

Intent callIntent = new Intent(Intent.ACTION_DIAL);
callIntent.setData(Uri.parse("tel:" + phoneNumber));
 if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                //    ActivityCompat#requestPermissions
                // here to request the missing permissions, and then overriding
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for ActivityCompat#requestPermissions for more details.
                return;
            }
startActivity(callIntent);

Кроме того, вы должны зарегистрировать настраиваемый экран набора, как показано в манифесте:

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
    android:name=".MyDialerApplication"
    android:label="@string/app_name" >

    <intent-filter android:priority="100" >
        <action android:name="android.intent.action.MAIN" />
         <action android:name="android.intent.action.DIAL" />
         <action android:name="android.intent.action.CALL_PRIVILEGED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="tel" />

    </intent-filter>
</activity>

person Vinitha Edwin    schedule 23.02.2017

Если вы хотите использовать его в неактивном классе, создайте такую ​​функцию:

package bp;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;

import session.MyApplication;

/**
 * Created by Atiar Talukdar on 7/11/2019.
 */
public class Utils {

    public static void openDialPad(Activity activity, String phoneNumber) {
        Intent intent = new Intent(Intent.ACTION_DIAL);
        intent.setData(Uri.parse("tel:" + phoneNumber));
        activity.startActivity(intent);
    }
}

а затем позвоните из любого места, например:

Utils.openDialPad(getActivity(),data.getContactNo());

or

Utils.openDialPad(this,data.getContactNo());

person Atiar Talukdar    schedule 11.07.2019

Это другое, но если вы хотите получить доступ к панели набора номера, щелкнув номер в своем xml, объявите атрибут autolink

android:autoLink="phone"
person Roshan S    schedule 03.03.2020