Android 适用于和API 19及更高版本的SMS接收器

Android 适用于和API 19及更高版本的SMS接收器,android,broadcastreceiver,Android,Broadcastreceiver,我的工作是创建短信应用程序来隐藏选定的号码,这样就不会进一步陷入默认短信应用程序,这项任务是简单的API,用于“在默认情况下需要使用我的短信接收器时,建议某人如何解决问题?”-这一点尚不清楚。你的意思是你的应用程序是默认的,还是不是默认的?好的,因为你不想响应,出于某种原因:如果你的应用程序不是默认的,你不能阻止默认应用程序接收和写入传入消息。如果你的应用程序是默认的,那么你只需要不写任何你不想写的传入消息,但是你不能阻止任何其他应用程序接收到的SMS\u广播,如果他们正在收听。好的,最好解释一

我的工作是创建短信应用程序来隐藏选定的号码,这样就不会进一步陷入默认短信应用程序,这项任务是简单的API,用于“在默认情况下需要使用我的短信接收器时,建议某人如何解决问题?”-这一点尚不清楚。你的意思是你的应用程序是默认的,还是不是默认的?好的,因为你不想响应,出于某种原因:如果你的应用程序不是默认的,你不能阻止默认应用程序接收和写入传入消息。如果你的应用程序是默认的,那么你只需要不写任何你不想写的传入消息,但是你不能阻止任何其他应用程序接收到的
SMS\u
广播,如果他们正在收听。好的,最好解释一下问题。我有两种短信,第一种是正常的人际交流,这种交流我需要捕捉默认的短信应用程序。第二种是来自监控生产机器的发送方的SMS通信。这份报告充满了描述设施状况的毫无意义的数字。如果我收到这条消息,我需要另一个接收器来截获,在我的应用程序中,我可以在报告中声明警报、绘制图表等。这些设施的报告应该出现在默认的SMS应用程序中。不显示的一个原因是,这些报告将以每分钟10次的速度出现——很多。一个问题是,在有必要为ANDROID API版本>=19的员工购买新手机之后,这一功能就停止了。很清楚吗?是的,我之前的评论仍然适用。如果您的应用程序不是默认的SMS应用程序,则无法停止默认应用程序接收和保存传入的消息。如果您想继续使用SMS实现此功能,我看到两个选项:1)将您的应用程序设为默认SMS应用程序。默认设置负责保存消息和创建通知,并且可以选择不为报告消息执行这些操作。2.)切换到对报告使用数据SMS。这些是针对特定应用程序/端口的,默认应用程序根本不应对其作出反应。“在默认情况下,当您需要使用我的SMS接收器时,建议某人如何解决问题?”-这一点尚不清楚。你的意思是你的应用程序是默认的,还是不是默认的?好的,因为你不想响应,出于某种原因:如果你的应用程序不是默认的,你不能阻止默认应用程序接收和写入传入消息。如果你的应用程序是默认的,那么你只需要不写任何你不想写的传入消息,但是你不能阻止任何其他应用程序接收到的
SMS\u
广播,如果他们正在收听。好的,最好解释一下问题。我有两种短信,第一种是正常的人际交流,这种交流我需要捕捉默认的短信应用程序。第二种是来自监控生产机器的发送方的SMS通信。这份报告充满了描述设施状况的毫无意义的数字。如果我收到这条消息,我需要另一个接收器来截获,在我的应用程序中,我可以在报告中声明警报、绘制图表等。这些设施的报告应该出现在默认的SMS应用程序中。不显示的一个原因是,这些报告将以每分钟10次的速度出现——很多。一个问题是,在有必要为ANDROID API版本>=19的员工购买新手机之后,这一功能就停止了。很清楚吗?是的,我之前的评论仍然适用。如果您的应用程序不是默认的SMS应用程序,则无法停止默认应用程序接收和保存传入的消息。如果您想继续使用SMS实现此功能,我看到两个选项:1)将您的应用程序设为默认SMS应用程序。默认设置负责保存消息和创建通知,并且可以选择不为报告消息执行这些操作。2.)切换到对报告使用数据SMS。这些是针对特定应用程序/端口的,默认应用程序根本不应对其作出反应。
public class SMSReceiver extends BroadcastReceiver {
public static String TAG = "SMSReceiver";
ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_MUSIC, 100);

public SMSReceiver() {
}

@Override
public void onReceive(Context context, Intent intent) {
    SMS_Throttle.VytvorDatabazi(context);
    String act = intent.getAction();
    Log.d(TAG, act);
    if (Dtb.HodnotaZNastaveniINT(ENastaveni.START_SKRYTE_SLUZBY, 1) == 1) {
        Bundle bundle = intent.getExtras();
        SmsMessage[] msgs = null;
        boolean isAbort = false;
        if (bundle != null) {
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];
            String lst[][] = SMS_Throttle.getTlfCisla(context);
            String[] l = new String[lst.length];
            for (int j = 0; j < lst.length; j++)
                l[j] = lst[j][0];
            for (int i = 0; i < msgs.length; i++) {
                msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                for (int j = 0; j < l.length; j++) {
                    if (msgs[i].getOriginatingAddress().endsWith(l[j])) {
                        if (Dtb.HodnotaZNastaveniINT(ENastaveni.PRISLA_AKTIVITA, 0) == 1) {
                            tg.startTone(ToneGenerator.TONE_DTMF_5, 30);
                            Toast.makeText(context, msgs[i].getMessageBody(), Toast.LENGTH_LONG).show();
                        }
                        isAbort = true;
                        Dtb.UlozActivitu(l[j], msgs[i].getMessageBody(), EKomunType.RECEIVE_SMS);
                    }
                }
            }
        }
        if (isAbort) {
            abortBroadcast();
        }
    }
}