【问题标题】:How to access the SMS storage on Android?如何访问 Android 上的短信存储?
【发布时间】:2011-06-16 03:26:05
【问题描述】:

这里是初级 Android 开发者。

我正在尝试创建一个应用程序,该应用程序将读取存储在设备上的 SMS 消息,然后向用户提供有关他们习惯的统计信息(例如他们经常发信息的人、常用词等)。

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

tl;dr:我如何在 Android 设备上阅读 SMS 消息,尤其是之前已阅读过的消息。

【问题讨论】:

  • 没有记录和支持的方式来访问您请求的数据。存在未记录和不受支持的方法,例如 Sebastian P 链接的内容。Google 明确表示这样做是个坏主意:android-developers.blogspot.com/2010/05/…
  • 我想这可以解释为什么我很难找到示例。老实说,我真的不明白这种做法。为什么 Google 会创建像 Content Providers 这样的有用代码,然后不承诺保留该代码或要求硬件制造商使用该代码?我想我真的开始理解“碎片化”问题了。

标签: android sms android-contentprovider


【解决方案1】:

有关访问 SMS/MMS 数据库的具体示例,请查看gTalkSMS

【讨论】:

  • gTalkSMS 示例似乎是我一直在寻找的。另一个教程只是关于我相信的收件箱。谢谢!
  • 对于未来的围观者,gTalkSMS 中一个非常有用的类是SmsManager 类。
  • 此答案与此处建议的质量级别不匹配。它必须被视为“仅链接的答案”,这是不受欢迎的。
【解决方案2】:

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

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

【讨论】:

  • 但是如果 OP 正在编写一个 SMS 应用程序,那么一个请求读取 SMS 权限的 SMS 应用程序不应该被认为是“不寻常的”,对吧?常识表明,如果您希望 SMS 应用程序显示您的消息,它需要能够访问和“阅读”它们,对吧?
【解决方案3】:

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

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

然后,安装程序后,请转到:“浏览数据”,您将在那里看到所有短信!

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

【讨论】:

  • sms数据库的绝对路径是:/data/data/com.android.providers/telephony/databases/mmssms.db 除非设备root且应用程序请求,否则无法访问此路径超级用户权限。
  • ^ 虽然它可能对以非编程方式研究此问题的人有所帮助,但尽管它没有回答它添加到上下文中的问题。
猜你喜欢
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
相关资源
最近更新 更多