2013-02-20 82 views
0

我使用SMSManager發送消息,我可以發送消息,但我想將它保存在消息對話中(默認消息應用程序在設備中)?將消息保存到Android中的收件箱?

我所做的是

ContentValues values = new ContentValues(); 
values.put("address", "123456789"); 
values.put("body", "foo bar"); 
getContentResolver().insert(Uri.parse("content://sms/sent"), values); 

我可以將其添加在收件箱中,但

由於從here CommansWare評論,

的短信內容提供商是不是一部分的Android SDK。您的代碼將在替換自己的SMS客戶端的設備上中斷。您的代碼可以在Android的

的未來版本打破我沒有設備來測試最新版本,什麼將成爲Android的所有版本的解決方案?

+2

因爲它不是android sdk的一部分,所以如果內容提供者將被更改,則需要更改代碼。所以最好的解決方案是將一些更新系統添加到您的應用程序。當設備更新爲具有不同提供商的版本時,請通知用戶相關信息,如果您創建處理更改的新應用程序,請讓客戶下載。 – Leri 2013-02-20 07:14:41

回答

1

內容uri不是Android SDK的一部分。雖然我還沒有看到任何使用其他uri的短信提供商的設備,但它可能是一個。我認爲Google很可能會在未來將這個uri字符串更改爲另一個字符串。但是供應商也可以修改這個。所以通常Android的所有版本都沒有銀彈。

正如PLB所說,您可以爲您的應用程序添加一些更新和錯誤報告功能。當設備更新爲具有不同提供商的版本時,請通知用戶相關信息,如果您創建處理更改的新應用程序,請讓客戶下載。如果你的代碼無法讀寫當前的uri。向您報告有關設備的一些信息。所以你將能夠修復它。

我首先想到,也許你可以自動查找com.android.providers.telephony.SmsProvider的字節碼(dex字節碼)。但是,這不是Android SDK的一部分。