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