Извлеките номер набора при вызове.

Когда я вводим любое число на клавиатуре, и после того, как я нажимаю кнопку вызова до того, как телефон совершит звонок, я хочу получить этот номер набора в лог-кате.

См. Ниже Изображение для понимания.

Введите описание изображения здесь

Могу ли я получить номер во время звонка, если да, то как я могу?

Solutions Collecting From Web of "Извлеките номер набора при вызове."

Попробуйте использовать это решение. Также см. Это

public class OutgoingCallReceiver extends BroadcastReceiver { public static final String ABORT_PHONE_NUMBER = "1231231234"; private static final String OUTGOING_CALL_ACTION = "android.intent.action.NEW_OUTGOING_CALL"; private static final String INTENT_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER"; @Override public void onReceive(final Context context, final Intent intent) { Log.v(Constants.LOGTAG, "OutgoingCallReceiver onReceive"); if (intent.getAction().equals(OutgoingCallReceiver.OUTGOING_CALL_ACTION)) { Log.v(Constants.LOGTAG, "OutgoingCallReceiver NEW_OUTGOING_CALL received"); // get phone number from bundle String phoneNumber = intent.getExtras().getString(OutgoingCallReceiver.INTENT_PHONE_NUMBER); if ((phoneNumber != null) && phoneNumber.equals(OutgoingCallReceiver.ABORT_PHONE_NUMBER)) { Toast.makeText(context, "NEW_OUTGOING_CALL intercepted to number 123-123-1234 - aborting call", Toast.LENGTH_LONG).show(); this.abortBroadcast(); } } } } 

Привет, наконец, я получил решение для этого. Вот так вы также можете это получить.

Вы должны использовать файл ITelephony.aidl Например:

 package com.android.internal.telephony; import android.os.Bundle; interface ITelephony { boolean endCall(); void dial(String number); void answerRingingCall(); void abortCall(); } 

И в OutgoingCallReceiver

 public class OutgoingCallReceiver extends BroadcastReceiver { Context context = null; private static final String TAG = "Phone call"; private ITelephony telephonyService; @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); if (null == bundle) return; String phonenumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); Log.i("OutgoingCallReceiver", phonenumber); Log.i("OutgoingCallReceiver", bundle.toString()); String info = "Detect Calls sample application\nOutgoing number: "+ phonenumber; /* System.out.println("value id:"+info); */ Toast.makeText(context, info, Toast.LENGTH_LONG).show(); TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); try { Class c = Class.forName(telephony.getClass().getName()); Method m = c.getDeclaredMethod("getITelephony"); m.setAccessible(true); /* * com.android.internal.telephony.ITelephony telephonyService = * (ITelephony) m.invoke(tm); */ telephonyService = (ITelephony) m.invoke(telephony); telephonyService.answerRingingCall(); telephonyService.endCall(); telephonyService.dial(null); telephonyService.abortCall(); } catch (Exception e) { e.printStackTrace(); } } } 

И если вы хотите получить IncomingCallReceiver то вот так вы можете:

 public class IncomingCallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); if(null == bundle) return; Log.i("IncomingCallReceiver",bundle.toString()); String state = bundle.getString(TelephonyManager.EXTRA_STATE); Log.i("IncomingCallReceiver","State: "+ state); if(state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING)) { String phonenumber = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); Log.i("IncomingCallReceiver","Incomng Number: " + phonenumber); System.out.println("Coming in Incoming Number"+phonenumber); String info = "Detect Calls sample application\nIncoming number: " + phonenumber; Toast.makeText(context, info, Toast.LENGTH_LONG).show(); } } } 

И ya Guys не забудьте добавить разрешение в файл AndroidManifest :

  <receiver android:name="com.varma.samples.detectcalls.receivers.OutgoingCallReceiver" > <intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> </receiver> <receiver android:name="com.varma.samples.detectcalls.receivers.IncomingCallReceiver" > <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.CALL_PRIVILEGED" />