2017-09-25 61 views
-2

我正在創建一個發送SMS消息的Android應用程序。除了一個問題,我已經做好了一切工作;除非應用程序處於打開狀態,否則它不會發出消息。Android:我如何在後臺發送短信? (API最小爲21)

我發送代碼是基本的:

SmsManager smsManager = SmsManager.getDefault(); 
    smsManager.sendTextMessage(phoneNumber, null, messageToSend, null, null); 

我想成爲一個特定的時間發送的消息。我有時間存儲在一個名爲timeToSend的字符串中,如果應用程序位於前臺,它將完美髮送。我怎樣才能讓它在後臺發送消息?我已經閱讀過報警管理器,但我不確定這是否是我需要的。

謝謝。

+1

「我想要在特定時間發送消息」 - 那麼也許您的問題出現在您的代碼中以用於「特定時間」邏輯。 – CommonsWare

+0

每當我使用它時,我都會將具體時間設置爲一分鐘。 – Kobeissi2

+0

我的觀點是你的問題沒有顯示「特定時間」邏輯的代碼。因此,沒有人可以幫助你。 – CommonsWare

回答

0

就像@CommonsWare說的,你需要處理你的特定時間邏輯。爲什麼不使用AlarmManager這將調用一個服務,其中您的代碼發送短信實際上「發生」。如果您確實使用了AlarmManager,請注意Android的不同版本將會(可能)通過與AlarmManager相關的不同方法處理,可能包括重置AlarmManager的代碼(如有必要)。您還必須瞭解如何在「背景」上從棉花糖管理服務的更改。...

**編輯:**請注意,重新啓動設備時,您必須重置AlarmManager以及。

+0

工作得很好!它有點延遲,但這與我的API級別預計。 – Kobeissi2

0

我想你可以使用AsyncTask,它在後臺運行

如何實現它的細節in this developer's page

的AsyncTask能夠正確且容易使用的UI線程。這個類 允許您執行後臺操作並在UI線程上發佈結果,而無需操作線程和/或處理程序。

+0

我剛試過,它仍然只在打開時發送。 :( – Kobeissi2