как узнать исходящий номер в диспетчере телефонии - PullRequest
5 голосов
/ 07 июля 2011

Я использую это:

public void onCallStateChanged(int state, String incomingNumber)

который слушает:

telephonyManager.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);

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

Также есть способ имитировать исходящие вызовы в эмуляторе Eclipse. смог сделать это для входящих звонков через управление эмулятором в Eclipse.

Ответы [ 2 ]

13 голосов
/ 12 июля 2011

Используйте широковещательный приемник с целевым android.intent.action.NEW_OUTGOING_CALL строковым параметром для IntentFilter и не забудьте дать разрешение в AndroidMenifest на PROCESS_OUTGOING_CALLS.Это будет работатьПри каждом исходящем звонке будет отображаться тостовое сообщение.Код ниже.

public static final String outgoing = "android.intent.action.NEW_OUTGOING_CALL" ;
IntentFilter intentFilter = new IntentFilter(outgoing);
BroadcastReceiver OutGoingCallReceiver = new BroadcastReceiver()
{
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        // TODO Auto-generated method stub
        String outgoingno = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
        Toast.makeText(context, "outgoingnum =" + outgoingno,Toast.LENGTH_LONG).show();
    }
};
registerReceiver(brForOutgoingCall, intentFilter);
1 голос
/ 12 июня 2015

Создать новый класс, скажем, MyPhoneReceiver , расширить его из BroadcastReceiver и реализовать метод onReceive.

public class MyPhoneReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent){

        String phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);

    }
}

В другом классе, скажем, MainActivity.class внутри метода onCreate.например.

    IntentFilter filter = new IntentFilter("android.intent.action.NEW_OUTGOING_CALL");
    MyPhoneReceiver myPhoneReceiver = new MyPhoneReceiver();
    registerReceiver(myPhoneReceiver,filter);

В AndroidManifest.xml

<receiver
   android:name=".MyPhoneReceiver">
   <intent-filter>
     <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
  </intent-filter>
</receiver>

, а также в AndroidManifest.xml добавьте:

<uses-permission
    android:name="android.permission.PROCESS_OUTGOING_CALLS">
</uses-permission>
...