在Android post 2.3中,有没有办法结束通话?
我正在尝试开发类似于AutoAnswer的东西,但当广播接收器收到通知时,它也会自动挂断。我花了一整天的时间阅读关于这个问题的其他stackoverflow问题,似乎权限在Android post 2.3中,有没有办法结束通话?,android,telephony,Android,Telephony,我正在尝试开发类似于AutoAnswer的东西,但当广播接收器收到通知时,它也会自动挂断。我花了一整天的时间阅读关于这个问题的其他stackoverflow问题,似乎权限MODIFY_PHONE_STATE仅限于系统应用程序,然而,一些帖子说使用endCall();不需要此权限 我的问题有两部分: endCall()仍然可用吗?自从安卓2.3以来,它在任何地方都被使用过吗 如果是的话,我需要帮助使它工作,因为现在它不工作。我从以下网站下载ITelephony.aidl 然后把它装在一个包裹里。我
MODIFY_PHONE_STATE
仅限于系统应用程序,然而,一些帖子说使用endCall();不需要此权限
我的问题有两部分:
endCall()
仍然可用吗?自从安卓2.3以来,它在任何地方都被使用过吗ITelephony.aidl
然后把它装在一个包裹里。我是新用户,因此无法发布图像这是在我的广播接收器中运行的代码。作为这个问题的解决方案,它已经在这里发布了很多次,但我仍然无法让它发挥作用:/
ITelephony telephonyService;
TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Class c = Class.forName(telephony.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony) m.invoke(telephony);
telephonyService.endCall();
}
catch (Exception e) {
//TODO: some exception handling
}
通过查看日志,我看到以下错误:
[PhoneIntfMgr] CMD_END_CALL: no call to hang up
编辑:我是android开发的新手,似乎找不到android应用程序的控制台输出-比如调用e.printStackTrace(),但我确实让Toast在catch块中显示一些文本,如下所示:
catch (Exception e) {
Toast toast = Toast.makeText(context, "IN CATCH BLOCK ", Toast.LENGTH_LONG);
toast.show();
e.printStackTrace();
}
但是屏幕上没有显示任何内容。您可以使用以下代码:
telephonyManager.listen(new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
/* your code */
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Toast.makeText(context.getApplicationContext(), "OFFHOOK",
Toast.LENGTH_SHORT).show();
setResultData(null);
break;
case TelephonyManager.CALL_STATE_RINGING:
/* your code */
break;
}
// super.onCallStateChanged(state, incomingNumber);
}
}, PhoneStateListener.LISTEN_CALL_STATE);
当您进入离线状态时,您可以看到显示“离线”的toast,然后
setResultData(null)
是结束调用。根据代码的状态,您无法判断是否引发了异常。也许对于started,您应该在catch块中添加一些调试输出。希望对您有所帮助。。首先了解logcat。然后想想你为什么要挂断用户的电话——这很少是一件合适的事情。一旦通话已经开始,这个代码会起作用吗?我不想阻止呼叫,我想结束当前呼叫。请参阅编辑的帖子,它是检测到的呼叫状态。我使用摘机状态结束通话,这是当您接受通话或当您输入号码并拨打感谢!明天早上我会试试这个。我试了这个,屏幕上会显示祝酒词,但电话永远不会结束。