2012-01-30 3 views
3

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

Как я могу это сделать, это невозможно?

Я искал, и я нахожу это невозможным. пожалуйста помогите.

public class Telephony3 extends Service 
{ 
    Context context; 
    public IBinder onBind(Intent intent) 
    { 

     return null; 
    } 

    public void onCreate() 
    { 
     super.onCreate(); 
     try 
     { 
      StateListener phoneStateListener = new StateListener(); 
      TelephonyManager telephonymanager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
      telephonymanager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); 
     }catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 

    } 

    class StateListener extends PhoneStateListener{ 
     @Override 
     public void onCallStateChanged(int state, String incomingNumber) { 
      super.onCallStateChanged(state, incomingNumber); 
      switch(state){ 
       case TelephonyManager.CALL_STATE_RINGING: 
        //Disconnect the call here... 
        try{ 
         TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.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()); 
      } 

        break; 
       case TelephonyManager.CALL_STATE_OFFHOOK: 
        break; 
       case TelephonyManager.CALL_STATE_IDLE: 
        break; 
      } 
     } 
    }; 
    public void onDestroy() 
    { 

    } 

} 

/////////////////////////////////////////// 
make another package com.android.internal.telephony and make one interface ITelephony 

public interface ITelephony 
{ 
    boolean endCall(); 

    void answerRingingCall(); 

    void silenceRinger(); 

} 

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

заранее спасибо

+0

здесь Ваше решение: http://stackoverflow.com/questions/7121508/android-taking-complete-control-of-phone-is-it-possible -how/7121586 # 7121586 –

+0

@ Vineet Shukla - Работает ли он на 2.3+? – user370305

+0

Да, я протестировал его ... –

ответ

2

Вы можете создать свою собственную деятельность, которая обрабатывает действия «ACTION_ANSWER».

Зарегистрируйте свой прикладной компонент как обработчик намерения.

+0

и я нашел одну ссылку, которая может вам помочь .... http: //code.google.com/p/auto-answer/source/browse/trunk/src/com/everysoft/autoanswer/AutoAnswerIntentService.java –

0

Here - это сообщение в блоге, в котором предлагается возможное обходное решение.

-1
Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON);    
    buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK)); 
    getContext().sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED"); 

из

http://androidbridge.blogspot.com/2011/05/how-to-answer-incoming-call-in-android.html

+0

Эта ссылка на самом деле не говорит вам, как ** отключить ** вызов. Без каких-либо объяснений трудно получить от этого ответа. Пожалуйста, подумайте над добавлением немного больше. – Nate

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