17d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/* 27d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Copyright (C) 2010 The Android Open Source Project 37d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 47d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 57d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * you may not use this file except in compliance with the License. 67d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * You may obtain a copy of the License at 77d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 87d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * http://www.apache.org/licenses/LICENSE-2.0 97d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Unless required by applicable law or agreed to in writing, software 117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * See the License for the specific language governing permissions and 147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * limitations under the License. 157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 17788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepalpackage com.android.services.telephony.sip; 187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.Context; 204ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunnimport android.content.Intent; 214ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunnimport android.net.sip.SipManager; 227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.provider.Settings; 237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.provider.Settings.SettingNotFoundException; 247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.util.Log; 257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/** 27b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger * Wrapper for SIP's preferences. 287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 29b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebingerpublic class SipPreferences { 30b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger private static final String PREFIX = "[SipPreferences] "; 316556a09daab949853c384b385bc7618a6c75d9ddSantos Cordon private static final boolean VERBOSE = false; /* STOP SHIP if true */ 32788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepal 33b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger // Used to clear out old SharedPreferences file during SipProfile Database Migration 347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final String SIP_SHARED_PREFERENCES = "SIP_PREFERENCES"; 35baee2955f596f7b79971feb12fa21031a069677dTyler Gunn 367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private Context mContext; 377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 38b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger public SipPreferences(Context context) { 397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mContext = context; 407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void setSipCallOption(String option) { 437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Settings.System.putString(mContext.getContentResolver(), 447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Settings.System.SIP_CALL_OPTIONS, option); 454ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunn 464ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunn // Notify SipAccountRegistry in the telephony layer that the configuration has changed. 474ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunn // This causes the SIP PhoneAccounts to be re-registered. This ensures the supported URI 484ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunn // schemes for the SIP PhoneAccounts matches the new SIP_CALL_OPTIONS setting. 494ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunn Intent intent = new Intent(SipManager.ACTION_SIP_CALL_OPTION_CHANGED); 504ddd0efe67e93798d98c86b073d6cd0b1343f840Tyler Gunn mContext.sendBroadcast(intent); 517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public String getSipCallOption() { 547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon String option = Settings.System.getString(mContext.getContentResolver(), 557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Settings.System.SIP_CALL_OPTIONS); 567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return (option != null) ? option 577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon : mContext.getString(R.string.sip_address_only); 587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void setReceivingCallsEnabled(boolean enabled) { 617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Settings.System.putInt(mContext.getContentResolver(), 627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Settings.System.SIP_RECEIVE_CALLS, (enabled ? 1 : 0)); 637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public boolean isReceivingCallsEnabled() { 667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon try { 677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return (Settings.System.getInt(mContext.getContentResolver(), 687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Settings.System.SIP_RECEIVE_CALLS) != 0); 697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } catch (SettingNotFoundException e) { 70788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepal log("isReceivingCallsEnabled, option not set; use default value, exception: " + e); 717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return false; 727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 75baee2955f596f7b79971feb12fa21031a069677dTyler Gunn /** 76b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger * Remove obsolete SharedPreferences File upon upgrade from M->N. 77baee2955f596f7b79971feb12fa21031a069677dTyler Gunn */ 78b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger public void clearSharedPreferences() { 79b64b0a8e1f203b7628b6eeca9d0186803beaff7bBrad Ebinger mContext.deleteSharedPreferences(SIP_SHARED_PREFERENCES); 80baee2955f596f7b79971feb12fa21031a069677dTyler Gunn } 81baee2955f596f7b79971feb12fa21031a069677dTyler Gunn 827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // TODO: back up to Android Backup 83788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepal 84788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepal private static void log(String msg) { 85788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepal Log.d(SipUtil.LOG_TAG, PREFIX + msg); 86788959e2d798da2d8a34cf89779421966d200f3dSailesh Nepal } 877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon} 88