众所周知,Android的短信存储为:
CREATE TABLE sms (_id INTEGER PRIMARY KEY,
thread_id INTEGER,
address TEXT,
person INTEGER,
date INTEGER,
date_sent INTEGER DEFAULT 0,
protocol INTEGER,
read INTEGER DEFAULT 0,
status INTEGER DEFAULT -1,
type INTEGER,
reply_path_present INTEGER,
subject TEXT,
body TEXT,
service_center TEXT,
locked INTEGER DEFAULT 0,
error_code INTEGER DEFAULT 0,
seen INTEGER DEFAULT 0
)
在使用双卡手机的情况下,可以预期某些参数可用于识别用于发送/接收短信的SIM卡吗?
在正常情况下,已知person == NULL
用于传出短信;我的双卡MTK手机似乎没有任何倾向记住在会话中发送消息的SIM卡(这就是我将我的工作号码回复给朋友的方式......)。< / p>
此外,我猜仍然只有一个短信内容文件夹(否则会出现严重的兼容性问题),而ContentValues似乎也无法存储太多数据。
但是,我仍然希望同时支持HTC和MTK的双卡解决方案;将传入/传出SMS与SIM#相关联的最常用方法是什么?如何为发送短信获取发送方#并获取接收的接收路径号?
P.S。 “服务中心#”已知但拒绝解决方案 - 我在一部手机中拥有一个操作员的两张SIM卡。
答案 0 :(得分:0)
我建议:
1 - 构建支持双SIM卡设备的消息应用程序。让用户将此应用程序设为默认值非常重要。因为从Android 19(Kitkat)开始,只有默认消息应用程序才能访问db。
2 - 使用这种方式管理用于发送消息的SIM卡。 https://stackoverflow.com/a/30677542/2267723
3 - 隐含地表示您的应用程序用于将数据存储到数据库以用于传入/传出/发送消息(SMS / MMS)。所以你知道#2使用了哪个sim,然后将sim_ID存储在DB中。稍后您可以使用它来了解管理该消息的SIM卡。
提示: 最好存储SIM的ID(IMSI / subscriberID),或者你可以使用SIM卡的serialNumer来识别SIM,如果该ID属于插入的SIM卡,那么你可以将消息称为SIM1或SIM2消息。否则独立于SIM卡插槽保留消息...不建议将值为0/1或1/2的消息存储为已使用SIM卡的标识符。因为如果用户更改SIM或切换它们,则会发生冲突。你可以看到它破碎的设计。
祝你好运,