zoukankan      html  css  js  c++  java
  • 如何通过subId来获取phoneId?

    androidL中使用一张数据表来保存sim卡信息:telephony.db中有一张记录SIM卡信息的表,siminfo:

    CREATE TABLE siminfo(_id INTEGER PRIMARY KEY AUTOINCREMENT,icc_id TEXT NOT NULL,sim_id INTEGER DEFAULT -1,display_name TEXT,carrier_name TEXT,name_source INTEGER DEFAULT 0,color INTEGER DEFAULT 0,number TEXT,display_number_format INTEGER NOT NULL DEFAULT 1,data_roaming INTEGER DEFAULT 0,mcc INTEGER DEFAULT 0,mnc INTEGER DEFAULT 0);

    一行记录实例如下:

    INSERT INTO "siminfo" VALUES(1,'89860114831010865147',0,'中国联通','中国联通3G',0,-16746133,'+8618516657794',1,0,460,1);

    其中,主键_id就类似SIM卡的id,其值是从1开始递增的,sim_id类似于slot id,在双卡版本中一般只有-1/0/1三个值;其余的属性都好理解。

    那如何去对应_id和sim_id呢?如函数:
    SubscriptionController.getPhoneId(subId): // 根据subId取得phoneId
    foreach  entry: mSlotIdxToSubId.entrySet() // 具体代码,遍历mSlotIdxToSubId
        int sim = entry.getKey(); // 对应siminfo表中的sim_id字段
        int sub = entry.getValue(); // 对应siminfo表中的_id字段
        if (subId == sub) { return sim; } // 正常流程下,这里返回的值会作为phoneId;

    就是说传入的参数subId值等于siminfo表中的某行SIM的_id值,返回其sim_id字段,这个字段代表了phone id。


    可以参考mSlotIdxToSubId 中的元素是这样填充的:

    mSlotIdxToSubId.put(slotId, subId); // slotId:the slot which the SIM is inserted; subId:siminfo表中_id字段,一个例子:

                   _id = 3
                   icc_id = 89860114831010865147
                   sim_id = 1

  • 相关阅读:
    [NOIP2010]引水入城
    [NOIP2009]靶形数独
    设计模式学习笔记——桥接模式(Bridge)
    BootStrap3.0学习--JavaScript 插件
    BootStrap3.0学习--组件
    BootStrap3.0学习--全局 CSS 样式
    BootStrap3.0学习--起步
    设计模式之第11章-建造者模式(Java实现)
    设计模式之第10章-桥接模式(Java实现)
    设计模式之第9章-原型模式(Java实现)
  • 原文地址:https://www.cnblogs.com/caidi/p/4581816.html
Copyright © 2011-2022 走看看