首页 > 解决方案 > 我是否需要在 content://sms/inbox 中手动插入新消息?

问题描述

最近开始为大学项目学习android。我创建了一个短信应用程序,它能够成为默认应用程序(虽然是简约的应用程序)。当我将其设置为默认短信应用程序时,我手机的内置应用程序停止接收新消息。

问题:

  1. 所有新消息都会自动进入content://sms/inbox还是我们必须手动更新?我问这个是因为我的内置短信应用程序没有反映收到的短信,而它不是默认短信应用程序。

  2. 是否有必要将新消息转发到侦听收到新短信的其他应用程序?

标签: androidbroadcastreceiversmsandroid-contentproviderandroid-contentresolver

解决方案


所有新消息都会自动进入content://sms/inbox还是我们必须手动更新?

不,这些邮件不会自动写入收件箱。默认应用程序负责将所有传入的 SMS 保存到 Provider。尽管默认应用程序不需要这样做,但如果它没有将它们保存在那里,那么查询提供程序以读取现有消息的其他应用程序就不会看到它们。这可以解释为什么您的内置 SMS 应用程序看不到收到的新消息,而您的是默认消息。

系统自动处理的唯一消息写入是针对非默认应用程序发送的传出 SMS。所有其他插入、更新和删除都留给默认应用程序。


是否有必要将新消息转发到侦听收到新短信的其他应用程序?

不具体,因为它是。任何有兴趣在消息到达时获取消息的非默认应用程序都应该监听SMS_RECEIVED广播,系统将自动发送。此类应用程序可以直接访问消息,因为它们Intent作为附加内容附加到广播。

除此之外,非默认值读取消息或收到更改通知的唯一其他(实用)方式几乎是通过提供程序,因此只要您将消息保存在那里,这些应用程序就会被覆盖,如好。


推荐阅读