2012-12-24 87 views
0

我想问一个问题。
我已经制作了一个启动和停止后台服务的按钮。
我做了一个类SmsReceiver它读取传入的短信。
所以我想当服务开始拨打Sms BroadcastReceiver
任何想法或任何其他想法如何阅读短信与后台服务?从后台服务呼叫SmsReceiver

回答

0

如果你已经有了SmsReceiver做工精细,所有你需要做的是从Service。要注册它做,你需要重写ServiceonCreate()

你的服务应该是这个样子:

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> 
+0

该服务有一个错误,并且它希望此代码 'code' @Override \t公共的IBinder onBind(意向为arg0){ \t \t // TODO自动生成方法存根 \t \t返回NULL; \t} – nestorasg

+0

另一个问题是,如果应用程序在没有启动服务的情况下启动,则广播接收器开始工作。任何想法? – nestorasg

+0

对于你的第一个评论,是的,你需要重写onBind。如果你不想绑定,就可以像eclipse那样离开实现。为你的第二。不要在清单中声明接收器。一旦它在清单中声明,接收器将运行添加很长时间,因为您的应用程序的某些部分正在运行。 –