2016-04-06 123 views
0

所以我想爲我的想法寫一個PoC應用程序。我的應用程序要做的功能之一就是發送一條短信(也許還會收到投遞通知)。它不會是一個短信應用程序。只是一個服務,可能會在後臺運行,並在某個特定的時間間隔發送短信,無人看管(當然用戶同意)。我可以通過服務發送短信嗎?

我記得在一些android api發佈時,Google決定只能發送接收短信,如果你已經選擇你的應用爲「默認」短信應用?我不記得確切。

所以問題是,我的應用程序(作爲服務)可以發送短信並接收投遞通知,而不是一個短信應用程序?

每當我試圖谷歌這個問題,我覺得如何發送短信例如與SMSManager和發送短信的代碼,但沒有在那裏我能找到這個答案。

回答

1

所以問題是,我的應用程序(作爲服務)可以發送短信並接收投遞通知,而不是一個短信應用程序?

是的。自從KitKat以來,已經有了一個默認的短信應用程序的概念,這是我相信你所指的。

SMS的處理方式與該版本的主要區別在於,只有默認的SMS應用程序具有對提供程序的寫入權限,但其他任何應用程序仍然可以照常發送和接收消息。如果您的應用程序不是默認應用程序,則它發送的所有消息將自動被系統寫入提供程序。

此外,SMS_RECEIVED廣播無法再中止,因此在應用程序有機會處理它們之前,您不必擔心其他某些應用程序攔截傳入消息。

+0

您可以詳細解釋**它發送的任何消息將自動被系統寫入提供程序。你是什​​麼意思 ?這裏的供應商是誰?寫入系統?意味着寫入smsdb? –

+0

提供者引用SMS'ContentProvider',它處理中央MMS/SMS數據庫中SMS表上的事務,並通過一個'ContentResolver'與應用程序交互。這就是設備上的多個SMS應用程序都可以顯示相同的消息。在KitKat之前,如果您的應用程序使用'SmsManager'發送了一條消息,則您的應用程序本身必須將其寫入提供程序(如果您希望它顯示在本地SMS應用程序中)。從KitKat開始,由於非默認應用程序不具有對提供程序的寫入權限,因此係統會爲其編寫傳出消息。 –