2015-03-01 2 views

ответ

2

Вам нужно создать BroadCastReceiver, который будет вызываться на действии: NEW_OUTGOING_CALL

Java Класс:

public class CallReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(final Context context, final Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){ 
      setResultData(null); 
      abortBroadcast(); // cancel the call 
     } 
    } 
} 

Manifest декларации

Редактировать не забудьте добавить исходящий разрешение

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

<receiver android:name=".CallReceiver" > 
    <intent-filter android:priority="2147483647" > 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
    </intent-filter> 
</receiver> 

С помощью этого кода, любой вызов будет отменен, и вы не будете в состоянии сделать вызов, если это приложение на телефоне

+0

это не отменяя вызов !! Я тестировал устройство Android 4.2. Кроме того, просто вызов 'abortBroadcast()' не поможет, я думаю, поскольку он только Устанавливает флаг, указывающий, что этот ресивер должен прервать текущую трансляцию. НЕТ. Предполагается, что он должен «ОТМЕНА» позвонить – AADProgramming

+0

Думаю, я забыл что-то, я редактирую. – Hacketo

0

1.Create BroadcastReceiver с приоритетом 0.

<receiver android:name=".YourReceiver" > 
    <intent-filter android:priority="0" > 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
    </intent-filter> 

2.In BroadcastReceiver перехватить ACTION_NEW_OUTGOING_CALL намерения в его OnReceive метод

public void onReceive(final Context context, final Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){ 
      setResultData(null); 
     } 
    } 

3.call setResultData(null) в OnReceive, как показано на выше кода/метода

Добавить ниже разрешения в AndroidManifest.xml файл

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 
Смежные вопросы