如何在android kitkat中阻止文本和调用?

如何在android kitkat中阻止文本和调用?,android,Android,我对安卓非常陌生。我已经开发了一个文本关闭应用程序。它在4.2或更低版本中运行顺利,但它的文本块功能不适用于kitkat,并且在一次响铃后调用disconnect。我完全是黑人,我该怎么办。我正在使用以下代码 AndroidManifest.xml中的权限 <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permi

我对安卓非常陌生。我已经开发了一个文本关闭应用程序。它在4.2或更低版本中运行顺利,但它的文本块功能不适用于kitkat,并且在一次响铃后调用disconnect。我完全是黑人,我该怎么办。我正在使用以下代码

AndroidManifest.xml中的权限

 <uses-permission android:name="android.permission.RECEIVE_SMS" />
 <uses-permission android:name="android.permission.READ_SMS" />
 <uses-permission android:name="android.permission.SEND_SMS" />
 <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
 <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" />
ServiceReceiver.java

registerReceiver(service, new IntentFilter(
        "android.intent.action.PHONE_STATE"));
registerReceiver(service, new IntentFilter(
        "android.intent.action.NEW_OUTGOING_CALL"));
IntentFilter intentSMS = new IntentFilter(
        "android.provider.Telephony.SMS_RECEIVED");
intentSMS.setPriority(2147483647);
registerReceiver(sms, intentSMS);
public class ServiceReciever extends BroadcastReceiver
{

    private static TelephonyManager telephony;
    private static DeviceStateListener phoneListener;
    private static boolean firstTime=true;

    public ServiceReciever(Context context)
    {
        telephony=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
        phoneListener=new DeviceStateListener(context);
    }

    @Override
    public void onReceive(Context context, Intent intent)
    {   
        DeviceStateListener.outgoing = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

        if(firstTime)
        {
            telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
            firstTime=false;
        }
    }

    public void stopListening()
    {
        telephony.listen(phoneListener, PhoneStateListener.LISTEN_NONE);
        firstTime=true;
    }

}
public class DeviceStateListener extends PhoneStateListener {
    private ITelephony telephonyService;

    public DeviceStateListener(Context context) {
        super();
        this.context = context;
        initializeTelephonyService();
    }

    private void initializeTelephonyService() {
        try {
            TelephonyManager telephonyManager = (TelephonyManager) context
                    .getSystemService(Context.TELEPHONY_SERVICE);
            Class clase = Class.forName(telephonyManager.getClass().getName());
            Method method = clase.getDeclaredMethod("getITelephony");
            method.setAccessible(true);
            telephonyService = (ITelephony) method.invoke(telephonyManager);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onCallStateChanged(int state, final String incomingNumber) {
        final String android_id = Secure.getString(context
                .getApplicationContext().getContentResolver(),
                Secure.ANDROID_ID);
        super.onCallStateChanged(state, incomingNumber.replace("+", ""));

        switch (state) {
        case TelephonyManager.CALL_STATE_OFFHOOK:
             BlackoutPopUp();
            if (outgoing !=null &&!outgoing.equals("911")) {
                telephonyService.endCall();
            }

                break;
        case TelephonyManager.CALL_STATE_RINGING:
            telephonyService.endCall();
            break;
        }
    }

}
    public class SmsReceiver extends BroadcastReceiver
    {
    private Context context;

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        this.context=context;
        blockSms(intent);
    }
    public void blockSms(Intent intent)
    {
        String MSG_TYPE=intent.getAction();
        Bundle bundle = intent.getExtras();
        Object messages[] = (Object[]) bundle.get("pdus");
       final SmsMessage smsMessage[] = new SmsMessage[messages.length];
        for (int n = 0; n < messages.length; n++) 
        {
            smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
        }
abortBroadcast();
}
    }
DeviceStateListener.java

registerReceiver(service, new IntentFilter(
        "android.intent.action.PHONE_STATE"));
registerReceiver(service, new IntentFilter(
        "android.intent.action.NEW_OUTGOING_CALL"));
IntentFilter intentSMS = new IntentFilter(
        "android.provider.Telephony.SMS_RECEIVED");
intentSMS.setPriority(2147483647);
registerReceiver(sms, intentSMS);
public class ServiceReciever extends BroadcastReceiver
{

    private static TelephonyManager telephony;
    private static DeviceStateListener phoneListener;
    private static boolean firstTime=true;

    public ServiceReciever(Context context)
    {
        telephony=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
        phoneListener=new DeviceStateListener(context);
    }

    @Override
    public void onReceive(Context context, Intent intent)
    {   
        DeviceStateListener.outgoing = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

        if(firstTime)
        {
            telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
            firstTime=false;
        }
    }

    public void stopListening()
    {
        telephony.listen(phoneListener, PhoneStateListener.LISTEN_NONE);
        firstTime=true;
    }

}
public class DeviceStateListener extends PhoneStateListener {
    private ITelephony telephonyService;

    public DeviceStateListener(Context context) {
        super();
        this.context = context;
        initializeTelephonyService();
    }

    private void initializeTelephonyService() {
        try {
            TelephonyManager telephonyManager = (TelephonyManager) context
                    .getSystemService(Context.TELEPHONY_SERVICE);
            Class clase = Class.forName(telephonyManager.getClass().getName());
            Method method = clase.getDeclaredMethod("getITelephony");
            method.setAccessible(true);
            telephonyService = (ITelephony) method.invoke(telephonyManager);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onCallStateChanged(int state, final String incomingNumber) {
        final String android_id = Secure.getString(context
                .getApplicationContext().getContentResolver(),
                Secure.ANDROID_ID);
        super.onCallStateChanged(state, incomingNumber.replace("+", ""));

        switch (state) {
        case TelephonyManager.CALL_STATE_OFFHOOK:
             BlackoutPopUp();
            if (outgoing !=null &&!outgoing.equals("911")) {
                telephonyService.endCall();
            }

                break;
        case TelephonyManager.CALL_STATE_RINGING:
            telephonyService.endCall();
            break;
        }
    }

}
    public class SmsReceiver extends BroadcastReceiver
    {
    private Context context;

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        this.context=context;
        blockSms(intent);
    }
    public void blockSms(Intent intent)
    {
        String MSG_TYPE=intent.getAction();
        Bundle bundle = intent.getExtras();
        Object messages[] = (Object[]) bundle.get("pdus");
       final SmsMessage smsMessage[] = new SmsMessage[messages.length];
        for (int n = 0; n < messages.length; n++) 
        {
            smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
        }
abortBroadcast();
}
    }
SmsReceiver.java

registerReceiver(service, new IntentFilter(
        "android.intent.action.PHONE_STATE"));
registerReceiver(service, new IntentFilter(
        "android.intent.action.NEW_OUTGOING_CALL"));
IntentFilter intentSMS = new IntentFilter(
        "android.provider.Telephony.SMS_RECEIVED");
intentSMS.setPriority(2147483647);
registerReceiver(sms, intentSMS);
public class ServiceReciever extends BroadcastReceiver
{

    private static TelephonyManager telephony;
    private static DeviceStateListener phoneListener;
    private static boolean firstTime=true;

    public ServiceReciever(Context context)
    {
        telephony=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
        phoneListener=new DeviceStateListener(context);
    }

    @Override
    public void onReceive(Context context, Intent intent)
    {   
        DeviceStateListener.outgoing = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

        if(firstTime)
        {
            telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
            firstTime=false;
        }
    }

    public void stopListening()
    {
        telephony.listen(phoneListener, PhoneStateListener.LISTEN_NONE);
        firstTime=true;
    }

}
public class DeviceStateListener extends PhoneStateListener {
    private ITelephony telephonyService;

    public DeviceStateListener(Context context) {
        super();
        this.context = context;
        initializeTelephonyService();
    }

    private void initializeTelephonyService() {
        try {
            TelephonyManager telephonyManager = (TelephonyManager) context
                    .getSystemService(Context.TELEPHONY_SERVICE);
            Class clase = Class.forName(telephonyManager.getClass().getName());
            Method method = clase.getDeclaredMethod("getITelephony");
            method.setAccessible(true);
            telephonyService = (ITelephony) method.invoke(telephonyManager);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onCallStateChanged(int state, final String incomingNumber) {
        final String android_id = Secure.getString(context
                .getApplicationContext().getContentResolver(),
                Secure.ANDROID_ID);
        super.onCallStateChanged(state, incomingNumber.replace("+", ""));

        switch (state) {
        case TelephonyManager.CALL_STATE_OFFHOOK:
             BlackoutPopUp();
            if (outgoing !=null &&!outgoing.equals("911")) {
                telephonyService.endCall();
            }

                break;
        case TelephonyManager.CALL_STATE_RINGING:
            telephonyService.endCall();
            break;
        }
    }

}
    public class SmsReceiver extends BroadcastReceiver
    {
    private Context context;

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        this.context=context;
        blockSms(intent);
    }
    public void blockSms(Intent intent)
    {
        String MSG_TYPE=intent.getAction();
        Bundle bundle = intent.getExtras();
        Object messages[] = (Object[]) bundle.get("pdus");
       final SmsMessage smsMessage[] = new SmsMessage[messages.length];
        for (int n = 0; n < messages.length; n++) 
        {
            smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
        }
abortBroadcast();
}
    }
公共类SmsReceiver扩展了BroadcastReceiver
{
私人语境;
@凌驾
公共void onReceive(上下文、意图)
{
this.context=context;
区块短信(意向);
}
公共无效区块短信(意向)
{
字符串MSG_TYPE=intent.getAction();
Bundle=intent.getExtras();
对象消息[]=(对象[])bundle.get(“PDU”);
最终SmsMessage SmsMessage[]=新SmsMessage[messages.length];
对于(int n=0;n
请帮帮我。
感谢

您无法在Android 4.4+上实施短信拦截,除非您编写了一个完整的短信客户端应用程序,用户选择将其设置为默认应用程序:Hi Commonware感谢您的评论,但呼叫拦截功能也无法正常工作一次响铃后呼叫中断我错在哪里请建议我。