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}