Приемник SMS-трансляций ведет себя плохо - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь слушать, когда приходит смс с использованием широковещательного приемника, но я понял, что по некоторым причинам, когда приложение было очищено от последних приложений. Мой широковещательный приемник не запускается, когда приходит новое смс, а иногда и срабатывает. Вот мой код ...

 <receiver
        android:name=".services.receivers.SmsBankAlertReceiver"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.BROADCAST_SMS">
        <intent-filter android:priority="2147483647">
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

ublic class SmsBankAlertReceiver extends BroadcastReceiver {
private Context context;

@Override
public void onReceive(Context context, Intent intent) {
    this.context = context;
    if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
        Log.i("Aminu", "Broadcast is triggered");
        Bundle bundle = intent.getExtras();
        SmsMessage[] msgs = null;
        String msgfrom;
        String msgBody;
        long sentDate;
        if (bundle != null) {
            try {
                Object[] pdus = (Object[]) bundle.get("pdus");
                msgs = new SmsMessage[pdus.length];
                for (int i = 0; i < msgs.length; i++) {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                        String format = bundle.getString("format");
                        msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i], format);
                    } else {
                        msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                    }

                    msgfrom = msgs[i].getOriginatingAddress();
                    msgBody = msgs[i].getMessageBody();
                    sentDate = msgs[i].getTimestampMillis();

                    LogHelper.saveLog(context, msgfrom + "\n" + msgBody);

                    startBankAlertDialogService(msgfrom, msgBody, sentDate);
                    BillAlertHelper.handleBillAlert(msgfrom, msgBody, sentDate);
                    startTelecomsAlertService(msgfrom, msgBody, sentDate);
                    break;
                }
            } catch (Exception e) {
                LogHelper.saveLog(context, e.getMessage());
                e.printStackTrace();
            }
        }
    }
}
}
...