2012-05-27 75 views

回答

3

應該在

您現有BroadcastReceiver的(無證)android.provider.Telephony.SMS_RECEIVED已經運行在後臺運行:在你的廣播接收器啓動意圖相同的名稱您的清單服務在背景中。

即使移動重新啓動,它會自動啓動

您現有BroadcastReceiver的(無證)android.provider.Telephony.SMS_RECEIVED已經是設備重啓後可用。

1

如果你希望你的服務在手機啓動時運行,你應該簡單地聲明的廣播接收器與此意圖過濾器:

<receiver android:name="MyStartupIntentReceiver"> 
<intent-filter> 
<action 
android:name="android.intent.action.BOOT_COMPLETED" /> 
<category android:name="android.intent.category.HOME" /> 
</intent-filter> 
</receiver> 

在廣播接收器的onReceive()方法,只需啓動你的服務:

public void onReceive(Context context, Intent intent) { 
    Intent serviceIntent = new Intent(); 
    serviceIntent.setAction("myPackage.MyService"); 
    context.startService(serviceIntent); 

} 

而且一定要鏈接

<service android:name="MyService"> 
<intent-filter> 
<action 
android:name="myPackage.MyService" /> 
</intent-filter> 
</service> 
0

由於CommonsWare已經表示實際上沒有必要在背景中爲您接收SMS廣播,如果您的清單正確地在您的BroadcastReceiver中以「android.provider.Telephony.SMS_RECEIVED」註冊爲「每收到一條短信,意向過濾器都會觸發,不需要其他操作。

根據你想要做什麼,從那個廣播接收器,你可以通過實際的服務工作,或者更好的選擇是使用IntentService。這是因爲用於廣播的線程在開始後不久就會被殺死,所以你不應該在其中做任何廣泛的工作。

除非明確要求,否則通常建議不要使用實際的「服務」....但如果那是您需要的,那麼您需要Davide應該爲您提供正確的方向。

+0

謝謝@CommonsWare,Davide。我會試試這個,讓你的人知道 – littledev