美文网首页
根据手机sim1 sim2卡是否存在联系人来显示相应的备份选项

根据手机sim1 sim2卡是否存在联系人来显示相应的备份选项

作者: Sunny君907 | 来源:发表于2018-02-25 10:31 被阅读0次

联系人是手机功能中不可缺少的模块,主要记录用户的联系人数据,方便用户快捷的操作和使用,主要包括本机联系人和Sim卡联系人。

本机联系人主要存储在手机内部存储空间,Android平台上是通过数据库(Provider)进行存储,并提供复杂的字段用于表示联系人数据,并提供用户快捷的操作,比如增加,删除,修改,查询等等。

Sim卡联系人主要存储在Sim卡内部存储文件,包括adn、fdn、sdn。主要提供简单的字段用于表示联系人数据。并通过IccProvider提供的接口进行数据的增加、删除、修改、查询操作。
Contacts主要提供联系人列表显示、增删改、查找、显示选项、导入导出,数据同步和SNS整合、分享联系人、桌面快捷方式和文件夹、快捷操作、其他应用获取数据。
导入导出主要有导出到SD卡,从SD卡导入,从SIM导入。SD卡导入导出主要是通过vCard的形式,存储到sd卡或者从sd卡读取指定的vCard文件并进行解析。Sim导入主要是通过IccProvider的query方法将Sim卡联系人读取出来,用户可以选择全部导入或者导入指定的Sim卡联系人。目前不支持导出到Sim卡。恢复与备份模块可以通过ContentResolver获取手机和Sim卡联系人信息通过vCard的形式将其存入到SD卡中。
Sim卡联系人整合:实时获得Sim卡的状态,对Sim上的联系人导入到本地数据库,或者将本地数据中Sim卡联系人删除。数据库Contacts表和raw_Contacts表表
中有字段indicate_phone_or_sim_contact表示是否为Sim卡联系人,并区分出Sim1,Sim2上的联系人。
首先通过ContentResolver查询手机及Sim卡indicate_phone_or_sim_contact列来获取是否存在联系人,如果存在标志位,再通过查找手机及Sim'卡的ID进行判断具体的信息。手机的ID为-1,但是Sim卡的ID并不是1或者2,而是随运营商和Sim卡槽不同而不同,发现如果有两张中国移动卡,Sim卡的ID为2和4,如果是联通则为6,因此需要通过相关的函数动态获取Sim卡ID。
List<SubscriptionInfo> mSimInfoList;
mSimInfoList = SubscriptionManager.from(this).getActiveSubscriptionInfoList();
这个函数用来获取Sim卡的信息列表
cursor.getInt(0) == mSimInfoList.get(0).getSubscriptionId()
通过查询get(0).getSubscriptionId(),获取第一个卡槽的Sim卡是否存在联系人。
ContentResolver resolver = getContentResolver();
Cursor cursor = null;
boolean hasOne = false;
boolean hasTwo = false;
boolean hasThree = false;
try {
cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, new String[] {Contacts.INDICATE_PHONE_SIM}, null, null, null};
if(cursor != null) {
while (cursor.moveToNext()) {
if (cursor.getInt(0) == -1) {
hasOne = true;
}
if (cursor.getInt(0) == mSimInfoList.get(0).getSubscriptionId()) {
hasTwo = true;
}
if (cursor.getInt(0) == mSimInfoList.get(1).getSubscriptionId()) {
hasThree = true
}
}
} catch (Exception e) {
} finally {
if (cursor != null ) {
cursor.close();
}
}

通过hasPhoneContacts,hasSimContactsFirst,hasSimContactsSecond是否为真来分别判断手机,Sim1,Sim2是否存在联系人,根据是否存在联系人,将存在联系人的手机或者Sim卡String传值给setMultiChoiceItems(select, temp, new DialogInterface. OnMultiChoiceClickListener(){})中的select的string数组,首先得确定select[]数组大小,
simCount为有联系人的Sim卡个数,
contactCount为有联系人的手机和Sim卡个数,
mSimCount为总的Sim卡个数

相关文章

  • 根据手机sim1 sim2卡是否存在联系人来显示相应的备份选项

    联系人是手机功能中不可缺少的模块,主要记录用户的联系人数据,方便用户快捷的操作和使用,主要包括本机联系人和Sim卡...

  • 2018-11-19

    手机联系人删除了如何恢复? 怎么恢复手机删除的联系人?手机联系人误删了怎么办,如果你平时有备份可以直接通过备份数据...

  • 如何永久保存手机通讯录联系人不为换手机而烦恼!03

    -QQ同步助手、iCloud来帮忙您! 您是否会为以下问题而困扰: 1.手机意外坏了或丢失可惜联系人还未来得备份。...

  • 更换手机号需要做的一些事

    1.告知其他联系人新号码,并将所有人号码备份到新卡上。 现在手机的设置里边都会有联系人的导入导出功能,使用这个可以...

  • 简述mysql常用备份方式及备份工具并举例

    一、Mysql常用备份方式 Mysql的备份方法可以根据备份手段、备份的数据范围及备份时数据服务是否在线等来划分,...

  • 电信数据自注册

    上报数据如下: 重点 主卡(默认上网卡)永远是SIM1主卡相关信息必须附在SIM1前缀的项中在多次和电信部门校验后...

  • javascript的tricks集合

    Q:对象的key如何由条件决定?A:key使用[] Q:对象中要根据是否有值来决定相应的key是否存在?A:使用解...

  • 请记得备份手机通讯录

    通过本节课的学习,您可以: 备份手机通讯录换手机不用担心联系人找不到 某一天,你换了个新手机,保存在原来那个手机里...

  • iOS开发:通讯录联系人获取相关

    需求场景:获取通讯录中的手机联系人, 根据手机号码匹配app中的联系人, 判断在app中是否已经是自己好友。 目前...

  • 2018-11-23

    手机联系人不小心删除了怎么恢复呢? 手机联系人被删除怎么恢复?手机联系人误删了怎么办,如果你平时有备份可以直接通过...

网友评论

      本文标题:根据手机sim1 sim2卡是否存在联系人来显示相应的备份选项

      本文链接:https://www.haomeiwen.com/subject/lxjlxftx.html