解决方法
首先创建此接口:
public interface ITelephony { boolean endCall(); void answerRingingCall(); void silenceRinger(); }
然后创建扩展BroadcastReceiver的这个类
public class IncomingCallReceiver extends BroadcastReceiver { private ITelephony telephonyService; private String blacklistednumber = "+458664455"; @Override public void onReceive(Context context,Intent intent) { TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); try { Class c = Class.forName(tm.getClass().getName()); Method m = c.getDeclaredMethod("getITelephony"); m.setAccessible(true); ITelephony telephonyService = (ITelephony) m.invoke(tm); Bundle bundle = intent.getExtras(); String phoneNumber = bundle.getString("incoming_number"); Log.e("INCOMING",phoneNumber); if ((phoneNumber != null) && phoneNumber.equals(blacklistednumber)) { telephonyService.silenceRinger(); telephonyService.endCall(); Log.e("HANG UP",phoneNumber); } } catch (Exception e) { e.printStackTrace(); } }
这只能阻止那个单一的电话号码,但你明白了.
在你的清单中添加:
<receiver android:name=".IncomingCallReceiver"> <intent-filter android:priority="999"> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" />