перехват вызова на Android

#android #phone-number #intercept

#Android #номер телефона #перехват

Вопрос:

возможен ли в настоящее время перехват вызовов на Android? до уровня, на котором я могу получить номер телефона при совершении вызова.

Ответ №1:

да, вы можете…. расширьте BroadcastReceiver и переопределите onReceive следующим образом

 public class CallListener extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
            String phoneNumber = intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER);
            System.out.println(phoneNumber);

            if (phoneNumber != nullamp;amp; CallService.phoneNumber.equals("ANY_NUMBER_YOU_WANNA_INTERCEPT_ON")) {

                //do what you want to do :)
            }
        }

    }
  

и вам нужно будет добавить свой BroadcastReceiver на AndroidManifest.xml поскольку следующее

 <receiver android:name=".CallListener" android:permission="android.permission.PROCESS_OUTGOING_CALLS">
        <intent-filter>
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
        </intent-filter>
 </receiver>
  

Ответ №2:

Вы можете использовать PhoneStateListener с пользовательским широковещательным приемником, который доставит вас onCallStateChanged(int state, String incomingNumber) .

(Вам также понадобится <uses-permission android:name="android.permission.READ_PHONE_STATE" /> в вашем AndroidManifest.)

Комментарии:

1. Спасибо Бену Уильямсу, я хочу получать номер, когда пользователь совершает звонок. номер, на который осуществляется вызов, тоже.

2. Я не уверен, что вы можете напрямую, но если вы прослушиваете изменения состояния телефона, вы должны быть в состоянии определить, когда вызов был отправлен и завершился, а затем немедленно CallLog.Calls и getLastOutgoingCall выдает вам последний набранный номер.

3. снова танки. Я посмотрю на это. Но чего я действительно хочу, так это получить номер во время активного вызова или при нажатии кнопки вызова с вкладками.