如何在Android中通过编程断开来电

3

我想在特定的时间内挂断来电。

我能做到吗?这是不可能的吗?

我搜索了一下,发现似乎不可能。请帮帮我。

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

}

当我从另一个地方调用这个模拟器时,调用就发生了。如果有什么问题,请给我建议。谢谢。

这是你的解决方案:https://dev59.com/gWw05IYBdhLWcg3wpDRu#7121586 - Vineet Shukla
@Vineet Shukla - 它在2.3+上能用吗? - user370305
如果您想断开来电,需要获得权限。 - Vineet Shukla
@Vineet Shukla - MODIFY_PHONE_STATE 在2.3+上不可用。 - user370305
是的,我在清单文件中写了android.permission.MODIFY_PHONE_STATE,但当我从另一个模拟器呼叫时,它无法断开连接。我想知道它是否仅适用于2.2或其他问题。 - arpit
3个回答

2
您可以生成一个处理“ACTION_ANSWER”操作的活动。
将您的应用程序组件注册为意图处理程序。

我找到了一个链接,可能会对你有所帮助... http://code.google.com/p/auto-answer/source/browse/trunk/src/com/everysoft/autoanswer/AutoAnswerIntentService.java - Shashank Kadne

0

这里有一篇博客文章,建议一个可能的解决方法。


-1

这个链接实际上并没有告诉你如何断开通话。没有任何解释,很难从这个答案中得到太多信息。请考虑添加更多内容。 - Nate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接