173a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk/* 273a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * Copyright (C) 2015 The Android Open Source Project 373a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * 473a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * Licensed under the Apache License, Version 2.0 (the "License"); 573a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * you may not use this file except in compliance with the License. 673a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * You may obtain a copy of the License at 773a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * 873a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * http://www.apache.org/licenses/LICENSE-2.0 973a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * 1073a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * Unless required by applicable law or agreed to in writing, software 1173a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * distributed under the License is distributed on an "AS IS" BASIS, 1273a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1373a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * See the License for the specific language governing permissions and 1473a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk * limitations under the License. 1573a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk */ 1673a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkpackage com.android.settings.applications; 1773a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 1873a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkimport android.content.ComponentName; 1973a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkimport android.content.Context; 2073a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkimport android.telephony.TelephonyManager; 2173a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkimport android.text.TextUtils; 2273a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkimport android.util.AttributeSet; 2373a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 2473a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkimport com.android.internal.telephony.SmsApplication; 2573a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkimport com.android.internal.telephony.SmsApplication.SmsApplicationData; 2673a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkimport com.android.settings.AppListPreference; 2773a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 2873a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkimport java.util.Collection; 2973a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkimport java.util.Objects; 3073a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 3173a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkpublic class DefaultSmsPreference extends AppListPreference { 3273a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 3373a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk public DefaultSmsPreference(Context context, AttributeSet attrs) { 3473a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk super(context, attrs); 3573a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 3673a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk loadSmsApps(); 3773a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk } 3873a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 3973a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk private void loadSmsApps() { 4073a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk Collection<SmsApplicationData> smsApplications = 4173a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk SmsApplication.getApplicationCollection(getContext()); 4273a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 4373a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk int count = smsApplications.size(); 4473a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk String[] packageNames = new String[count]; 4573a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk int i = 0; 4673a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk for (SmsApplicationData smsApplicationData : smsApplications) { 4773a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk packageNames[i++] = smsApplicationData.mPackageName; 4873a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk } 4973a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk setPackageNames(packageNames, getDefaultPackage()); 5073a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk } 5173a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 5273a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk private String getDefaultPackage() { 5373a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk ComponentName appName = SmsApplication.getDefaultSmsApplication(getContext(), true); 5473a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk if (appName != null) { 5573a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk return appName.getPackageName(); 5673a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk } 5773a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk return null; 5873a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk } 5973a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 6073a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk @Override 6173a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk protected boolean persistString(String value) { 6273a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk if (!TextUtils.isEmpty(value) && !Objects.equals(value, getDefaultPackage())) { 6373a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk SmsApplication.setDefaultApplication(value, getContext()); 6473a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk } 6573a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk setSummary(getEntry()); 6673a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk return true; 6773a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk } 6873a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 6973a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk public static boolean isAvailable(Context context) { 7073a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk TelephonyManager tm = 7173a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 7273a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk return tm.isSmsCapable(); 7373a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk } 7473a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 7573a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk} 76