Java 阻止传入短信

Java 阻止传入短信,java,android,Java,Android,我试图阻止我的android设备中所有传入的短信 这是我使用的代码- public class SmsReceiver extends BroadcastReceiver { /** * Called when the activity is first created. */ private static final String ACTION = "android.provider.Telephony.SEND_SMS"; public static int MSG_TPE = 0;

我试图阻止我的android设备中所有传入的短信

这是我使用的代码-

public class SmsReceiver extends BroadcastReceiver {
/**
 * Called when the activity is first created.
 */
private static final String ACTION = "android.provider.Telephony.SEND_SMS";
public static int MSG_TPE = 0;

@Override
public void onReceive(Context context, Intent intent) {
    String MSG_TYPE = intent.getAction();
    if (MSG_TYPE.equals("android.provider.Telephony.SMS_RECEIVED")) {

        Bundle bundle = intent.getExtras();
        Object messages[] = (Object[]) bundle.get("pdus");
        SmsMessage smsMessage[] = new SmsMessage[messages.length];
        for (int n = 0; n < messages.length; n++) {
            smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
        }

        // show first message
        Toast toast = Toast.makeText(context, "BLOCKED Received SMS: " + smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);
        toast.show();
        abortBroadcast();
        for (int i = 0; i < 8; i++) {
            Log.i("log", "Blocking SMS **********************");
        }

    } else if (MSG_TYPE.equals("android.provider.Telephony.SEND_SMS")) {
        Toast toast = Toast.makeText(context, "SMS SENT: " + MSG_TYPE, Toast.LENGTH_LONG);
        toast.show();
        abortBroadcast();
        for (int i = 0; i < 8; i++) {
            Log.i("log", "Blocking SMS **********************");
        }

    } else {

        Toast toast = Toast.makeText(context, "SIN ELSE: " + MSG_TYPE, Toast.LENGTH_LONG);
        toast.show();
        abortBroadcast();
        for (int i = 0; i < 8; i++) {
            Log.i("log", "Blocking SMS **********************");
        }

    }

}

}
公共类SmsReceiver扩展了BroadcastReceiver{
/**
*在首次创建活动时调用。
*/
私有静态最终字符串ACTION=“android.provider.Telephony.SEND_SMS”;
公共静态int MSG_TPE=0;
@凌驾
公共void onReceive(上下文、意图){
字符串MSG_TYPE=intent.getAction();
if(MSG_TYPE.equals(“android.provider.Telephony.SMS_RECEIVED”)){
Bundle=intent.getExtras();
对象消息[]=(对象[])bundle.get(“PDU”);
SmsMessage SmsMessage[]=新SmsMessage[messages.length];
对于(int n=0;n
清单文件-

    <service android:name=".MyServiceSentReceived" android:enabled="true"/>

    <receiver android:name="SmsReceiver">
        <intent-filter android:priority="2147483645">
            <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
        </intent-filter>
    </receiver>

所以我提出了一个问题

我正在考虑的其他问题是-


是否有人对此有任何建议。

自API 19(KitKat)以来,您无法阻止传入的SMS,除非您的应用程序是默认的消息传递应用程序,即使如此,您也只能阻止它们保存到SMS提供商

接收到的
SMS_
广播不能再中止,因此任何监听该广播的应用程序仍将获得该广播。此外,默认应用程序无论如何都会接收不同的广播-
SMS\u DELIVER
,任何其他应用程序都不会接收到该广播,因此无法拦截

如果你的应用程序是默认的SMS应用程序,它负责将传入的消息写入SMS提供商,因此如果你不希望它们保存在那里,就不要写入它们。但是,这对收到的
SMS_
广播没有任何影响,该广播仍将发送到为其注册的任何应用程序,尽管这些应用程序无法将其写入提供商

下面的博客页面讨论了SMS API的更改,并详细介绍了作为默认消息传递应用程序的应用程序的要求。不过,请注意,默认应用程序负责很多事情,包括彩信,编写一个完整的消息传递客户端并不是一件小事


自API 19(KitKat)以来,您无法阻止传入的短信,除非您的应用程序是默认的短信应用程序,即使如此,您也只能阻止它们保存到短信提供商

接收到的
SMS_
广播不能再中止,因此任何监听该广播的应用程序仍将获得该广播。此外,默认应用程序无论如何都会接收不同的广播-
SMS\u DELIVER
,任何其他应用程序都不会接收到该广播,因此无法拦截

如果你的应用程序是默认的SMS应用程序,它负责将传入的消息写入SMS提供商,因此如果你不希望它们保存在那里,就不要写入它们。但是,这对收到的
SMS_
广播没有任何影响,该广播仍将发送到为其注册的任何应用程序,尽管这些应用程序无法将其写入提供商

下面的博客页面讨论了SMS API的更改,并详细介绍了作为默认消息传递应用程序的应用程序的要求。不过,请注意,默认应用程序负责很多事情,包括彩信,编写一个完整的消息传递客户端并不是一件小事


有人能告诉我为什么得到这个-1吗?有人能告诉我为什么得到这个-1吗?