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