android - 以编程方式结束android中的调用

标签 android phone-call

我看到很多问题表明在 Android 中无法以编程方式结束通话。 同时,我在 googleplay 市场上看到很多拨号器应用程序,您可以在其中激活和挂断电话。它们是如何工作的?

编辑:我在某处读到我的应用程序必须是系统应用程序。那么如何使其系统化,系统应用和用户应用有什么区别?

最佳答案

您无需成为系统应用。首先,在您的项目中创建包 com.android.internal.telephony,并将其放入名为“ITelephony.aidl”的文件中:

package com.android.internal.telephony; 

interface ITelephony {      

boolean endCall();     

void answerRingingCall();      

void silenceRinger(); 

}

一旦你有了它,你就可以使用这个代码来结束通话:

TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
Class clazz = Class.forName(telephonyManager.getClass().getName());
Method method = clazz.getDeclaredMethod("getITelephony");
method.setAccessible(true);
ITelephony telephonyService = (ITelephony) method.invoke(telephonyManager);
telephonyService.endCall();

例如,您可以在 PhoneStateListener 中使用它。为此,您需要 list 中的权限:

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

编辑:对可怕的格式表示歉意,我仍然无法弄清楚如何在这里正确处理代码块:/

关于android - 以编程方式结束android中的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18065144/

相关文章:

java - 是否可以使用 adb 检测来自 Android 设备上的应用程序的消息提示音?

java - 从 PJSIP 示例 (PJSUA2) 中调用 LogWriter 的位置打印

ios - 使用特殊字符的 swift 3 电话调用 #

android - 通话背景音乐

android - 我如何在android中获取最近完成的电话调用详细信息?

android - 数组无法转换为 JSONObject Android

android - 截取布局屏幕截图,WebView 在其中不可见

audio - 黑莓手机可以更好地控制电话-访问音频流

.net - 如何在我的手机上调用来电触发我的电脑上的操作

android - 不兼容类型 : cannot cast viewholder to imageviewholder