How to access the SMS storage on Android?


Question

Beginner Android dev here.

I'm trying to create an app that will read the SMS messages stored on the device and then give the user statistics about their habits (like who they message often, common words, etc).

But to my knowledge, there doesn't seem to be a way to do this. I've looked around on forums and the most anyone talks about is accessing the inbox where you can find messages the user hasn't read. How then can the default app and third-party (Handcent for example) display the same texts? They don't keep their own database because Handcent will display all texts upon fresh install.

tl;dr: How do I read SMS messages on an Android devices, specifically messages that have been read before.

1
33
1/26/2011 8:49:54 PM

Accepted Answer

For a concrete example of accessing the SMS/MMS database, take a look at gTalkSMS.

26
3/12/2013 12:07:58 AM

You are going to need to call the SmsManager class. You are probably going to need to use the STATUS_ON_ICC_READ constant and maybe put what you get there into your apps local db so that you can keep track of what you have already read vs the new stuff for your app to parse through. BUT bear in mind that you have to declare the use of the class in your manifest, so users will see that you have access to their SMS called out in the permissions dialogue they get when they install. Seeing SMS access is unusual and could put some users off. Good luck.

Here is the link that goes into depth on the Sms Manager


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon