0
我想问一个问题。
我已经制作了一个启动和停止后台服务的按钮。
我做了一个类SmsReceiver
它读取传入的短信。
所以我想当服务开始拨打Sms BroadcastReceiver
。
任何想法或任何其他想法如何阅读短信与后台服务?从后台服务呼叫SmsReceiver
我想问一个问题。
我已经制作了一个启动和停止后台服务的按钮。
我做了一个类SmsReceiver
它读取传入的短信。
所以我想当服务开始拨打Sms BroadcastReceiver
。
任何想法或任何其他想法如何阅读短信与后台服务?从后台服务呼叫SmsReceiver
如果你已经有了SmsReceiver
做工精细,所有你需要做的是从Service
。要注册它做,你需要重写Service
的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();
}
}
在清单中,一定要包括必要的短信权限,并记得在清单还宣布Service
。
<service android:name=".SmsService" >
</service>
该服务有一个错误,并且它希望此代码 'code' @Override \t公共的IBinder onBind(意向为arg0){ \t \t // TODO自动生成方法存根 \t \t返回NULL; \t} – nestorasg
另一个问题是,如果应用程序在没有启动服务的情况下启动,则广播接收器开始工作。任何想法? – nestorasg
对于你的第一个评论,是的,你需要重写onBind。如果你不想绑定,就可以像eclipse那样离开实现。为你的第二。不要在清单中声明接收器。一旦它在清单中声明,接收器将运行添加很长时间,因为您的应用程序的某些部分正在运行。 –