我已經創建了短信接收器應用程序...但我想創建它作爲服務,它應該在後臺運行(即沒有單獨的用戶界面這個應用程序,想要像報警應用程序)和即使移動重新啓動,它會自動啓動...任何人都可以幫助嗎?短信接收器作爲服務
我以前的短信接收應用程序代碼在這裏 Unable to instantiate activity ComponentInfo in Android Receive Sms App
我已經創建了短信接收器應用程序...但我想創建它作爲服務,它應該在後臺運行(即沒有單獨的用戶界面這個應用程序,想要像報警應用程序)和即使移動重新啓動,它會自動啓動...任何人都可以幫助嗎?短信接收器作爲服務
我以前的短信接收應用程序代碼在這裏 Unable to instantiate activity ComponentInfo in Android Receive Sms App
應該在
您現有BroadcastReceiver
的(無證)android.provider.Telephony.SMS_RECEIVED
已經運行在後臺運行:在你的廣播接收器啓動意圖相同的名稱您的清單服務在背景中。
即使移動重新啓動,它會自動啓動
您現有BroadcastReceiver
的(無證)android.provider.Telephony.SMS_RECEIVED
已經是設備重啓後可用。
如果你希望你的服務在手機啓動時運行,你應該簡單地聲明的廣播接收器與此意圖過濾器:
<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>
由於CommonsWare已經表示實際上沒有必要在背景中爲您接收SMS廣播,如果您的清單正確地在您的BroadcastReceiver中以「android.provider.Telephony.SMS_RECEIVED」註冊爲「每收到一條短信,意向過濾器都會觸發,不需要其他操作。
根據你想要做什麼,從那個廣播接收器,你可以通過實際的服務工作,或者更好的選擇是使用IntentService。這是因爲用於廣播的線程在開始後不久就會被殺死,所以你不應該在其中做任何廣泛的工作。
除非明確要求,否則通常建議不要使用實際的「服務」....但如果那是您需要的,那麼您需要Davide應該爲您提供正確的方向。
謝謝@CommonsWare,Davide。我會試試這個,讓你的人知道 – littledev