Android:双SIM卡手机有哪些特定于供应商的方法可以检测用于短信的SIM卡?

时间:2014-01-10 08:53:23

标签: android sms dual-sim

众所周知,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卡。

1 个答案:

答案 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卡。

enter image description here

提示: 最好存储SIM的ID(IMSI / subscriberID),或者你可以使用SIM卡的serialNumer来识别SIM,如果该ID属于插入的SIM卡,那么你可以将消息称为SIM1或SIM2消息。否则独立于SIM卡插槽保留消息...不建议将值为0/1或1/2的消息存储为已使用SIM卡的标识符。因为如果用户更改SIM或切换它们,则会发生冲突。你可以看到它破碎的设计。

祝你好运,