2012-04-03 6 views
0

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

private void callDisconnect(){ 
    try{ 
     TelephonyManager manager = (TelephonyManager)this.getSystemService(this.TELEPHONY_SERVICE); 
     Class c = Class.forName(manager.getClass().getName()); 
     Method m = c.getDeclaredMethod("getITelephony"); 
     m.setAccessible(true); 
     ITelephony telephony = (ITelephony)m.invoke(manager); 
     telephony.endcall(); 
    } catch(Exception e){ 
     Log.d("",e.getMessage()); 
    } 
} 

Может ли кто-нибудь помочь мне с этим? Нужно ли мне менять код или что-то в этом роде?

ответ

0

Вы не можете завершить вызов, как, что в Android 2.3 + ... используя код ... Я думаю, что только пользователь может закончить его вызов ... и для более ранних версий You can see this link и This one

0

Ну ваши вопросы потребностей еще немного R & D, но найти идеальное решение довольно сложно.

Надежда Это ссылки могут помочь. Link 1, Link 2, Stack Link

1

Это не возможно в новых версиях android. Пользователь решает, когда завершить вызов, если он уже запущен. Тем не менее, вы можете блокировать вызовы.

5

Для отключания вызова программно вы должны добавить файл ITelephony.AIDL в свой проект. Если вы его добавили, то ваше имя пакета должно быть com/android/internal/telephony/ITelephony.AIDL: для получения дополнительной информации см. Blocking Incoming call. Загрузите файл AIDL с here.

Для отключения вызова используйте endCall(); метод ITelephony

4

Просто используйте этот BroadcastReceiver. Я тестировал его в одном из своих приложений, и он отлично работает.

public class MyBroadcastReceiver extends BroadcastReceiver 
{ 

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


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

      if (phoneNumber.equals("123456")) 
      { 
       if (getResultData() != null) 
       { 

        setResultData(null); 
       } 


      } 

     } 


    } 

} 
+0

Это работало на 5.0.2 Lollipop – Sudara

Смежные вопросы