Android 从后台服务调用SmsReceiver
我想问一个问题。Android 从后台服务调用SmsReceiver,android,sms,broadcastreceiver,android-service,Android,Sms,Broadcastreceiver,Android Service,我想问一个问题。 我制作了一个启动和停止后台服务的按钮。 我创建了一个类SmsReceiver,用于读取传入的sms。 因此,我想在服务开始时呼叫Sms广播接收器 任何想法或任何其他想法如何使用后台服务阅读短信?如果您已经有SmsReceiver工作正常,您需要做的就是从服务注册它。要做到这一点,您需要覆盖服务的onCreate() 您的服务应该如下所示: public class SmsService extends Service { private SmsReceiver receiv
我制作了一个启动和停止后台服务的按钮。
我创建了一个类
SmsReceiver
,用于读取传入的sms。因此,我想在服务开始时呼叫
Sms广播接收器
任何想法或任何其他想法如何使用后台服务阅读短信?如果您已经有SmsReceiver
工作正常,您需要做的就是从服务注册它。要做到这一点,您需要覆盖服务的onCreate()
您的服务应该如下所示:
public class SmsService extends Service
{
private SmsReceiver receiver; //global so we can unregister it when the time comes.
public void onCreate ()
{
super.onCreate ();//call to super
//make a new intent filter so that all incoming SMS get to you as well
IntentFilter smsFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
receiver = new SmsReceiver(); //make a new SmsReceiver
registerReceiver(receiver, smsFilter); //register the Receiver
}
public void onDestroy ()
{
unregisterReceiver (receiver); //unregisters the Receiver if Service is killed
super.onDestroy();
}
}
在清单中,确保包含必要的SMS权限,并记住在清单中声明服务
<service android:name=".SmsService" >
</service>
服务有一个错误,它希望此代码code
@覆盖公共IBinder onBind(Intent arg0){//TODO自动生成的方法存根返回null;}另一个问题是,如果应用程序在未启动服务的情况下启动,广播接收器将开始工作。有什么想法吗?对于您的第一条评论,是的,您需要覆盖onBind。如果您不打算绑定,那么可以像eclipse那样保留实现。为了你的第二个。不要在舱单中声明接收人。一旦在清单中声明,只要你的应用程序的某个部分正在运行,接收者就会运行add。你的意思是我不应该在清单中为接收者写任何东西?甚至不是这个?