4

我能够阻止android中的来电,但是在断开时间之前它会响几秒钟。如何在不响铃的情况下直接断开电话?

我在Manifest文件中添加了权限:

<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-feature android:name="android.hardware.telephony" />

然后创建 IDL用于获取核心电话服务的接口。

 package com.android.internal.telephony;
  interface ITelephony {

  boolean endCall();

  void answerRingingCall();

  void silenceRinger();
}

然后为来电制作广播接收器。

public class PhonecallReceiver extends BroadcastReceiver {

Context context = null;

@Override
public void onReceive(Context context, Intent intent) {

      Log.i(TAG, "Receving call...");
      TelephonyManager telephony = (TelephonyManager) 
      context.getSystemService(Context.TELEPHONY_SERVICE);  
      try {

           Class c = Class.forName(telephony.getClass().getName());
           Method m = c.getDeclaredMethod("getITelephony");
           m.setAccessible(true);
           ITelephony telephonyService = (ITelephony) m.invoke(telephony);

            Bundle b = intent.getExtras();
            String incommingNumber = b.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);

            telephonyService.endCall();

    }catch (Exception e){  e.printStackTrace(); 
}}
4

1 回答 1

3

暂时是不可能完成的任务。在这里查看原因:为什么无法在 Android 上拦截来电

但我建议您仍然是我自己采用的临时解决方案:

在阻止通话之前,您需要做的第一件事是检索电话当前的振铃模式,然后打开静音:

AudioManager audiomanage = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
int ringerMode = audiomanage.getRingerMode();
audiomanage.setRingerMode(AudioManager.RINGER_MODE_SILENT);

阻止呼叫(或不阻止呼叫)后会为您提供初始模式:

audiomanage.setRingerMode(ringerMode);

您将需要这些权限:

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>

我希望我对你有所帮助。

于 2013-05-18T16:19:38.723 回答