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那樣離開實現。爲你的第二。不要在清單中聲明接收器。一旦它在清單中聲明,接收器將運行添加很長時間,因爲您的應用程序的某些部分正在運行。 –