135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang/* 235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * Copyright (C) 2017 The Android Open Source Project 335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * 435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * you may not use this file except in compliance with the License. 635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * You may obtain a copy of the License at 735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * 835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * http://www.apache.org/licenses/LICENSE-2.0 935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * 1035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * Unless required by applicable law or agreed to in writing, software 1135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS, 1235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * See the License for the specific language governing permissions and 1435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * limitations under the License. 1535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang */ 1635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 1735692cf439fe1067ea742174033f5748a08a5d66Fan Zhangpackage com.android.settings.applications.defaultapps; 1835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 1935692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport android.content.ComponentName; 2035692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport android.content.Context; 2135692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport android.content.pm.PackageManager; 2235692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport android.text.TextUtils; 2335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 2435692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport com.android.internal.logging.nano.MetricsProto; 2535692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport com.android.internal.telephony.SmsApplication; 2635692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport com.android.settings.R; 2735692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport com.android.settings.Utils; 2835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 2935692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport java.util.ArrayList; 3035692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport java.util.Collection; 3135692cf439fe1067ea742174033f5748a08a5d66Fan Zhangimport java.util.List; 3235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 3335692cf439fe1067ea742174033f5748a08a5d66Fan Zhangpublic class DefaultSmsPicker extends DefaultAppPickerFragment { 3435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 3535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang private DefaultKeyUpdater mDefaultKeyUpdater = new DefaultKeyUpdater(); 3635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 3735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Override 3835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang public int getMetricsCategory() { 3935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang return MetricsProto.MetricsEvent.DEFAULT_SMS_PICKER; 4035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 4135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 4235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Override 4335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang protected List<DefaultAppInfo> getCandidates() { 4435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang final Collection<SmsApplication.SmsApplicationData> smsApplications = 4535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang SmsApplication.getApplicationCollection(getContext()); 4635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang final List<DefaultAppInfo> candidates = new ArrayList<>(smsApplications.size()); 4735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 4835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang for (SmsApplication.SmsApplicationData smsApplicationData : smsApplications) { 4935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang try { 50a278962dbc545f69ca3712159d438f2e50dab0a5Fan Zhang candidates.add(new DefaultAppInfo(mPm, 5135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang mPm.getApplicationInfoAsUser(smsApplicationData.mPackageName, 0, mUserId))); 5235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } catch (PackageManager.NameNotFoundException e) { 5335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang // Skip unknown packages. 5435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 5535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 5635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 5735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang return candidates; 5835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 5935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 6035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Override 61a278962dbc545f69ca3712159d438f2e50dab0a5Fan Zhang protected String getDefaultKey() { 6235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang return mDefaultKeyUpdater.getDefaultApplication(getContext()); 6335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 6435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 6535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Override 66a278962dbc545f69ca3712159d438f2e50dab0a5Fan Zhang protected boolean setDefaultKey(String key) { 67a278962dbc545f69ca3712159d438f2e50dab0a5Fan Zhang if (!TextUtils.isEmpty(key) && !TextUtils.equals(key, getDefaultKey())) { 6835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang mDefaultKeyUpdater.setDefaultApplication(getContext(), key); 6935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang return true; 7035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 7135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang return false; 7235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 7335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 7435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang @Override 75a278962dbc545f69ca3712159d438f2e50dab0a5Fan Zhang protected String getConfirmationMessage(CandidateInfo info) { 7635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang return Utils.isPackageDirectBootAware(getContext(), info.getKey()) ? null 7735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang : getContext().getString(R.string.direct_boot_unaware_dialog_message); 7835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 7935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 8035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang /** 8135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang * Wrapper class to handle default phone app update. 8235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang */ 8335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang static class DefaultKeyUpdater { 8435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 8535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang public String getDefaultApplication(Context context) { 8635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang final ComponentName appName = SmsApplication.getDefaultSmsApplication(context, true); 8735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang if (appName != null) { 8835692cf439fe1067ea742174033f5748a08a5d66Fan Zhang return appName.getPackageName(); 8935692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 9035692cf439fe1067ea742174033f5748a08a5d66Fan Zhang return null; 9135692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 9235692cf439fe1067ea742174033f5748a08a5d66Fan Zhang 9335692cf439fe1067ea742174033f5748a08a5d66Fan Zhang public void setDefaultApplication(Context context, String key) { 9435692cf439fe1067ea742174033f5748a08a5d66Fan Zhang SmsApplication.setDefaultApplication(key, context); 9535692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 9635692cf439fe1067ea742174033f5748a08a5d66Fan Zhang } 9735692cf439fe1067ea742174033f5748a08a5d66Fan Zhang} 98