A500的dial过程选择phone

来源:互联网 发布:手机音乐软件 编辑:程序博客网 时间:2024/06/01 07:40

      在自己写的apk中发现当发出activity(intent)之后会跳出需要在两个phone之间选择,这个选择会影响后面的hangup,hangup中需要相应的phone来匹配。

      OutgoingCallReceiver是负责处理发过来的intent的,在它的doReceive里

 final PhoneGlobals app = PhoneGlobals.getInstance();            Phone phone = app.phone;            int simIndex = TelephonyConstants.DSDS_INVALID_SLOT_ID;            if (TelephonyConstants.IS_DSDS) {                simIndex = DualPhoneController.getSlotByIntent(intent);                if (!DualPhoneController.usingPrimaryPhone(intent)) {                    phone = app.phone2;                }

看起来这边有对phone进行了选择

研究DualPhoneController.usingPrimaryPhone(intent),这个必须是零。

static boolean usingPrimaryPhone(Intent intent) {        if (!TelephonyConstants.IS_DSDS) {            return true;        }        String sipPhoneUri = intent.getStringExtra(                OutgoingCallBroadcaster.EXTRA_SIP_PHONE_URI);        if (sipPhoneUri != null) {            return true;        }        switch (findSimId(intent)) {            case ID_SIM_1:                return isPrimaryOnSim1() ? true : false;            case ID_SIM_2:                return isPrimaryOnSim1() ? false : true;            default:                return true;        }    }
关键在于isPrimaryOnSim1() ,因为这里看起来和case是谁一点关系都没有

  static boolean isPrimaryOnSim1() {        return mPrimaryId == TelephonyConstants.DSDS_SLOT_1_ID;    }
后面的这个TelephonyConstants.DSDS_SLOT_1_ID是个常量

关键在于mPrimaryId

private DualPhoneController(PhoneGlobals app) {        mApp = app;        mCM = app.mCM;        mCM2 = app.mCM2;        mPrimaryId = Settings.Global.getInt(PhoneGlobals.getInstance().getContentResolver(),                Settings.Global.MOBILE_DATA_SIM,                TelephonyConstants.DSDS_SLOT_1_ID);    }
这个初始化在构造函数里

 public static int getInt(ContentResolver cr, String name, int def) {            String v = getString(cr, name);            try {                return v != null ? Integer.parseInt(v) : def;            } catch (NumberFormatException e) {                return def;            }





0 0
原创粉丝点击