As u know the table structure of sms table, it contains the text msg with the timestamp value.
So u can query the Content provider for values greater than the last timestamp already present in the table.
Steps to be followed,
¬†¬†¬†¬†Query the latest timestamp that is archived.
¬†¬†¬†¬†Query the Content provider by suitable changing the selection parameter
By following the example http://www.vogella.com/articles/AndroidSQLite/article.html
u can get the usage of selection param in content provider
private static final Uri SMS_INBOX = Uri.parse("content://sms/inbox");
String last_archived_date = xxxxxxxxxxxxx;
Cursor c = getContentResolver().query(SMS_INBOX, null, "date >"+last_archived_date, null, null);
There are many ways to retain monitor last_archived_date i prefer SharedPreference