0

我有一个短信广播接收器类,它扩展了广播接收器来处理传入的短信,我想让它在启动时运行。如何从扩展广播接收器的 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
        }
    }
}
4

1 回答 1

0

在 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);
    }

}
于 2012-06-16T20:09:48.793 回答