2011-01-26 91 views
31

这里初学Android的开发者。如何访问Android上的SMS存储?

我试图创建一个应用程序,将读取存储在设备上的短信,然后给他们习惯的用户统计(喜欢谁,他们经常消息,常用词,等等)。

但据我所知,似乎没有办法做到这一点。我浏览过论坛,大多数人都在谈论访问收件箱,您可以在其中找到用户没有阅读的信息。那么默认应用程序和第三方(例如Handcent)如何显示相同的文本?他们不保留自己的数据库,因为Handcent将在全新安装时显示所有文本。

TL;博士:我读了一个Android设备上的短信,特别是之前已经读的邮件怎么办。

+1

没有书面和支持的方式来访问您请求的数据。有没有文件和不支持的手段,如塞巴斯蒂安体育联系的东西。谷歌明确表示,这样做是一个坏主意:http://android-developers.blogspot.com/2010/05/be-careful-with -content-providers.html – CommonsWare 2011-01-26 21:20:16

+1

我想这解释了为什么我有这样的问题寻找例子。老实说,我真的不明白这种做法。 Google为什么要创建像Content Providers这样有用的代码,然后不承诺保留该代码或要求硬件制造商使用该代码?我认为我真的开始理解“分裂”问题。 – eternalmatt 2011-01-26 21:51:15

回答

24

对于访问SMS/MMS数据库的一个具体的例子,看看gTalkSMS

+0

gTalkSMS例子似乎是我一直在寻找的。另一篇教程就是关于我相信的收件箱。谢谢! – eternalmatt 2011-01-26 21:34:09

+2

为了将来旁观者,在gTalkSMS高度有用的类是[SmsManager](https://code.google.com/p/gtalksms/source/browse/src/com/googlecode/gtalksms/cmd/smsCmd/SmsManager.java )类。 – eternalmatt 2013-03-12 00:18:34

-5

执行以下操作,从here下载SQLLite数据库浏览器:

找到你的数据库。文件在您的手机中。

然后,一旦你安装程序到:“浏览数据”,你会看到所有的短信有!

您实际上可以将数据导出到Excel文件或SQL中。

2

你将需要调用SmsManager类。您可能需要使用STATUS_ON_ICC_READ常量,并且可能会将您获得的内容放到应用程序本地数据库中,以便您可以跟踪已读的内容与应用程序解析的新内容。 但请记住,您必须在清单中声明该类的用法,以便用户在安装时可以访问他们在其权限对话框中调用的SMS。看到短信访问是不寻常的,可能会让一些用户关闭。祝你好运。

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