Как отключить входящий звонок в андроиде программно - PullRequest
3 голосов
/ 30 января 2012

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

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

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

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();

}

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

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

Ответы [ 3 ]

2 голосов
/ 30 января 2012

Вы можете создать собственное действие, которое обрабатывает действие "ACTION_ANSWER".

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

0 голосов
/ 02 июля 2012
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 голосов
/ 30 января 2012

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

...