如何在Android中以编程方式拒绝通话

发布于 2021-01-29 19:37:23

在我的应用程序中,我将维护一个联系人列表。

列表中联系人的所有呼叫都将被挂断。他们会在未接来电下显示,但电话不会响铃。

关注者
0
被浏览
935
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    首先创建此接口:

      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" />
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看