如何在android中以编程方式拒绝调用

前端之家收集整理的这篇文章主要介绍了如何在android中以编程方式拒绝调用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的应用程序中,我将保留联系人列表.

来自列表中联系人的任何呼叫都将被删除.他们会在未接来电时显示,但手机不会响铃.

解决方法

首先创建此接口:
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" />
原文链接:https://www.f2er.com/android/316598.html

猜你在找的Android相关文章