SimChangeReceiver.java revision 57c59860b3737d7c3cd36455ad484c035c6c1dfb
1e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen/*
2e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen * Copyright (C) 2015 The Android Open Source Project
3e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen *
4e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen * Licensed under the Apache License, Version 2.0 (the "License");
5e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen * you may not use this file except in compliance with the License.
6e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen * You may obtain a copy of the License at
7e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen *
8e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen *      http://www.apache.org/licenses/LICENSE-2.0
9e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen *
10e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen * Unless required by applicable law or agreed to in writing, software
11e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen * distributed under the License is distributed on an "AS IS" BASIS,
12e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen * See the License for the specific language governing permissions and
14e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen * limitations under the License
15e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen */
16e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chenpackage com.android.phone.vvm.omtp;
17e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen
18e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chenimport android.content.BroadcastReceiver;
19e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chenimport android.content.Context;
20e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chenimport android.content.Intent;
2157c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chenimport android.telecom.PhoneAccountHandle;
220e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chenimport android.telephony.CarrierConfigManager;
230e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chenimport android.telephony.SubscriptionManager;
2457c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chenimport android.telephony.TelephonyManager;
25e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chenimport android.util.Log;
26e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen
27e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chenimport com.android.internal.telephony.IccCardConstants;
280e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chenimport com.android.internal.telephony.PhoneConstants;
290e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chenimport com.android.internal.telephony.TelephonyIntents;
3057c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chenimport com.android.phone.PhoneUtils;
3157c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chenimport com.android.phone.settings.VisualVoicemailSettingsUtil;
329cc75becf6d2b474b319eeaa10ad16228355b806Nancy Chenimport com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
33e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen
34e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen/**
350e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen * This class listens to the {@link CarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED} and
360e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen * {@link TelephonyIntents#ACTION_SIM_STATE_CHANGED} to determine when a SIM is added, replaced,
370e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen * or removed.
38e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen *
39e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen * When a SIM is added, send an activate SMS. When a SIM is removed, remove the sync accounts and
40e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen * change the status in the voicemail_status table.
41e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen */
42e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chenpublic class SimChangeReceiver extends BroadcastReceiver {
43e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen    private final String TAG = "SimChangeReceiver";
44c9cc8b3915eac1676daf3ed067179f90eba21166Nancy Chen
45e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen    @Override
46e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen    public void onReceive(Context context, Intent intent) {
470e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen        final String action = intent.getAction();
480e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen        if (action == null) {
490e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen            Log.w(TAG, "Null action for intent.");
500e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen            return;
510e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen        }
520e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen
530e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen        switch (action) {
540e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen            case TelephonyIntents.ACTION_SIM_STATE_CHANGED:
550e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen                if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(
560e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen                        intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE))) {
570e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen                    Log.i(TAG, "Sim removed, removing inactive accounts");
589cc75becf6d2b474b319eeaa10ad16228355b806Nancy Chen                    OmtpVvmSourceManager.getInstance(context).removeInactiveSources();
590e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen                }
60e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen                break;
610e70002f75a2f71efe663d54cc7e033044bb7a72Nancy Chen            case CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED:
629cc75becf6d2b474b319eeaa10ad16228355b806Nancy Chen                int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY,
639cc75becf6d2b474b319eeaa10ad16228355b806Nancy Chen                        SubscriptionManager.INVALID_SUBSCRIPTION_ID);
6457c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                OmtpVvmCarrierConfigHelper carrierConfigHelper =
6557c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                        new OmtpVvmCarrierConfigHelper(context, subId);
6657c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen
6757c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                if (carrierConfigHelper.isOmtpVvmType()) {
6857c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                    PhoneAccountHandle phoneAccount = PhoneUtils.makePstnPhoneAccountHandle(
6957c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                            SubscriptionManager.getPhoneId(subId));
7057c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen
7157c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                    if (TelephonyManager.VVM_TYPE_OMTP.equals(carrierConfigHelper.getVvmType())) {
7257c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                        carrierConfigHelper.startActivation();
7357c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                        VisualVoicemailSettingsUtil.setVisualVoicemailEnabled(
7457c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                                context, phoneAccount, true);
7557c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                    } else {
7657c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                        VisualVoicemailSettingsUtil.setVisualVoicemailEnabled(
7757c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                                context, phoneAccount, false);
7857c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                    }
7957c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                }
80e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen                break;
81e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen        }
82e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen    }
83c9cc8b3915eac1676daf3ed067179f90eba21166Nancy Chen}