Android系统修改之Email自动回复功能分析

时间:2023-01-31 18:19:08

1. Email添加自动回复功能需要注意事项

  1. Email可能存在多个账户, 因此自动回复功能应该添加在账户设置里面, 自动回复针对一个账户单独处理
  2. 在Email账户设置里面, 开启自动回复功能的时, 需要保存设置的时间(时间戳, 是否需要考虑时区等影响), 账户ID, 自动回复的内容(自动回复的内容, 由用户编辑, 内置默认回复), 开启状态
  3. 自动回复功能的设置数据, 通过Email账户的EmailAddress获取

2. Email自动回复功能注意事项

  1. 监听Email数据库中MESSAGE表的数据(邮件)变化
  2. 判断邮件的mailboxKey的类型是否是INBOX
  3. 判断邮件的accountKey是否是开启自动回复功能的账户
  4. 判断邮件的timeStamp是否晚于开启自动回复功能的时间
  5. 判断该邮件的接收者是否已经自动回复
    1. 通过 subject 判断是否有 Re:subject 数据. 如果有则说明已经自动回复, 如果没有则说明没有自动回复. 该种方式不可靠
    2. 在MESSAGE添加replyMessageId字段, INBOX类型的邮件存储自动回复邮件的ID, 自动回复邮件存储被自动回复邮件的ID. 工作量比较大, 改动较多
  6. 如果INBOX数据有抄送(cc), 或者暗抄送(bcc), 自动回复数据是否添加?
  7. 自动回复数据是否携带引用(quote), 如果接收的邮件有附件怎么处理?
  8. 在删除Email账户的时候需要删除保存的自动回复相关信息

3. Email自动回复功能添加到什么地方?

  1. EmailProvider的insert方法. 方便简单
  2. 同步数据成功, 执行插入MESSAGE表的位置, 需要监听数据库发生改变. 目前没有找到该位置在什么地方, 牵涉到Android系统的同步机制

4. Email自动回复功能采用什么方式实现?

  1. 硬编码到EmailProvider的insert方法处. 不可取
  2. 在EmailProvider的insert方法处, 采用IntentService