我看到很多问题表明在 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/