我正在开发一个调用特定联系号码的Android应用程序,但我需要在几秒钟后自动断开呼叫。
即使我需要等到上面的调用在我的应用程序中断开连接。
答案 0 :(得分:1)
This是我能够找到的最简单的解决方案,以编程方式结束通话并对其进行了很好的解释,以下是x秒后如何结束通话的示例:
这将是您可以调用的方法示例:
public void startDial(int milliseconds, string phoneNumber){
//performs call
if (!phoneNumber.equals("")) {
Intent intent = new Intent(this, MyReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + milliseconds, pi);
Uri number = Uri.parse("tel:" + phoneNumber);
Intent dial = new Intent(Intent.ACTION_CALL, number);
startActivity(dial, 0);
}
}
这将是您可以设置的接收器的示例:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
endCall(context);
}
public void endCall(Context context) {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
Object telephonyService = m.invoke(tm);
c = Class.forName(telephonyService.getClass().getName());
m = c.getDeclaredMethod("endCall");
m.setAccessible(true);
m.invoke(telephonyService);
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:0)
对于 API >= 26 (ANDROID_O)
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
requestPermissions(new String[] {
Manifest.permission.ANSWER_PHONE_CALLS
}, PERMISSION_RQUEST);
TelecomManager mgr = (TelecomManager) getSystemService(TELECOM_SERVICE);
mgr.endCall();