SimChangeReceiver.java revision a04959f74ba9009612804a4a5a5d8dd470969ddc
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
71e196c278fbdc6cd83ce6f647f00e3e81eec28273Nancy Chen                    if (carrierConfigHelper.isEnabledByDefault()) {
7257c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                        VisualVoicemailSettingsUtil.setVisualVoicemailEnabled(
73a04959f74ba9009612804a4a5a5d8dd470969ddcNancy Chen                                context, phoneAccount, true, false);
74a04959f74ba9009612804a4a5a5d8dd470969ddcNancy Chen                    }
75a04959f74ba9009612804a4a5a5d8dd470969ddcNancy Chen
76a04959f74ba9009612804a4a5a5d8dd470969ddcNancy Chen                    if (carrierConfigHelper.isEnabledByDefault() ||
77a04959f74ba9009612804a4a5a5d8dd470969ddcNancy Chen                            VisualVoicemailSettingsUtil.isEnabledByUserOverride(
78a04959f74ba9009612804a4a5a5d8dd470969ddcNancy Chen                                    context, phoneAccount)) {
79e196c278fbdc6cd83ce6f647f00e3e81eec28273Nancy Chen                        carrierConfigHelper.startActivation();
8057c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                    } else {
81e196c278fbdc6cd83ce6f647f00e3e81eec28273Nancy Chen                        // It may be that the source was not registered to begin with but we want
82e196c278fbdc6cd83ce6f647f00e3e81eec28273Nancy Chen                        // to run through the steps to remove the source just in case.
83a04959f74ba9009612804a4a5a5d8dd470969ddcNancy Chen                        VisualVoicemailSettingsUtil.setVisualVoicemailEnabled(
84a04959f74ba9009612804a4a5a5d8dd470969ddcNancy Chen                                context, phoneAccount, false, false);
85e196c278fbdc6cd83ce6f647f00e3e81eec28273Nancy Chen                        OmtpVvmSourceManager.getInstance(context).removeSource(phoneAccount);
86e196c278fbdc6cd83ce6f647f00e3e81eec28273Nancy Chen                        carrierConfigHelper.startDeactivation();
8757c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                    }
8857c59860b3737d7c3cd36455ad484c035c6c1dfbNancy Chen                }
89e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen                break;
90e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen        }
91e53a064be1bcea3ec2acb3c7681fa9a2762f4e3eNancy Chen    }
92c9cc8b3915eac1676daf3ed067179f90eba21166Nancy Chen}