12ea67003364d8f4a79d6afd624d56709839151eeFan Zhang/*
22ea67003364d8f4a79d6afd624d56709839151eeFan Zhang * Copyright (C) 2017 The Android Open Source Project
32ea67003364d8f4a79d6afd624d56709839151eeFan Zhang *
42ea67003364d8f4a79d6afd624d56709839151eeFan Zhang * Licensed under the Apache License, Version 2.0 (the "License");
52ea67003364d8f4a79d6afd624d56709839151eeFan Zhang * you may not use this file except in compliance with the License.
62ea67003364d8f4a79d6afd624d56709839151eeFan Zhang * You may obtain a copy of the License at
72ea67003364d8f4a79d6afd624d56709839151eeFan Zhang *
82ea67003364d8f4a79d6afd624d56709839151eeFan Zhang *      http://www.apache.org/licenses/LICENSE-2.0
92ea67003364d8f4a79d6afd624d56709839151eeFan Zhang *
102ea67003364d8f4a79d6afd624d56709839151eeFan Zhang * Unless required by applicable law or agreed to in writing, software
112ea67003364d8f4a79d6afd624d56709839151eeFan Zhang * distributed under the License is distributed on an "AS IS" BASIS,
122ea67003364d8f4a79d6afd624d56709839151eeFan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132ea67003364d8f4a79d6afd624d56709839151eeFan Zhang * See the License for the specific language governing permissions and
142ea67003364d8f4a79d6afd624d56709839151eeFan Zhang * limitations under the License.
152ea67003364d8f4a79d6afd624d56709839151eeFan Zhang */
162ea67003364d8f4a79d6afd624d56709839151eeFan Zhang
172ea67003364d8f4a79d6afd624d56709839151eeFan Zhangpackage com.android.settings.applications.defaultapps;
182ea67003364d8f4a79d6afd624d56709839151eeFan Zhang
192ea67003364d8f4a79d6afd624d56709839151eeFan Zhangimport android.content.Context;
202ea67003364d8f4a79d6afd624d56709839151eeFan Zhangimport android.content.pm.PackageManager;
212ea67003364d8f4a79d6afd624d56709839151eeFan Zhangimport android.nfc.NfcAdapter;
222ea67003364d8f4a79d6afd624d56709839151eeFan Zhangimport android.os.UserManager;
232ea67003364d8f4a79d6afd624d56709839151eeFan Zhangimport android.support.v7.preference.Preference;
242ea67003364d8f4a79d6afd624d56709839151eeFan Zhang
252ea67003364d8f4a79d6afd624d56709839151eeFan Zhangimport com.android.settings.R;
262ea67003364d8f4a79d6afd624d56709839151eeFan Zhangimport com.android.settings.core.PreferenceControllerMixin;
272ea67003364d8f4a79d6afd624d56709839151eeFan Zhangimport com.android.settings.nfc.PaymentBackend;
282ea67003364d8f4a79d6afd624d56709839151eeFan Zhangimport com.android.settingslib.core.AbstractPreferenceController;
292ea67003364d8f4a79d6afd624d56709839151eeFan Zhang
302ea67003364d8f4a79d6afd624d56709839151eeFan Zhangpublic class DefaultPaymentSettingsPreferenceController extends AbstractPreferenceController
312ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        implements PreferenceControllerMixin {
322ea67003364d8f4a79d6afd624d56709839151eeFan Zhang
332ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    private final NfcAdapter mNfcAdapter;
342ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    private final PackageManager mPackageManager;
352ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    private final UserManager mUserManager;
362ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    private PaymentBackend mPaymentBackend;
372ea67003364d8f4a79d6afd624d56709839151eeFan Zhang
382ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    public DefaultPaymentSettingsPreferenceController(Context context) {
392ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        super(context);
402ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        mPackageManager = context.getPackageManager();
412ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
422ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        mNfcAdapter = NfcAdapter.getDefaultAdapter(mContext);
432ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    }
442ea67003364d8f4a79d6afd624d56709839151eeFan Zhang
452ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    @Override
462ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    public boolean isAvailable() {
472ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        return mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC)
482ea67003364d8f4a79d6afd624d56709839151eeFan Zhang                && mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)
492ea67003364d8f4a79d6afd624d56709839151eeFan Zhang                && mUserManager.isAdminUser()
502ea67003364d8f4a79d6afd624d56709839151eeFan Zhang                && mNfcAdapter != null
512ea67003364d8f4a79d6afd624d56709839151eeFan Zhang                && mNfcAdapter.isEnabled();
522ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    }
532ea67003364d8f4a79d6afd624d56709839151eeFan Zhang
542ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    @Override
552ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    public void updateState(Preference preference) {
562ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        if (mPaymentBackend == null) {
572ea67003364d8f4a79d6afd624d56709839151eeFan Zhang            if (mNfcAdapter != null) {
582ea67003364d8f4a79d6afd624d56709839151eeFan Zhang                mPaymentBackend = new PaymentBackend(mContext);
592ea67003364d8f4a79d6afd624d56709839151eeFan Zhang            } else {
602ea67003364d8f4a79d6afd624d56709839151eeFan Zhang                mPaymentBackend = null;
612ea67003364d8f4a79d6afd624d56709839151eeFan Zhang            }
622ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        }
632ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        if (mPaymentBackend == null) {
642ea67003364d8f4a79d6afd624d56709839151eeFan Zhang            return;
652ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        }
662ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        mPaymentBackend.refresh();
672ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        final PaymentBackend.PaymentAppInfo app = mPaymentBackend.getDefaultApp();
682ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        if (app != null) {
692ea67003364d8f4a79d6afd624d56709839151eeFan Zhang            preference.setSummary(app.label);
702ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        } else {
712ea67003364d8f4a79d6afd624d56709839151eeFan Zhang            preference.setSummary(R.string.app_list_preference_none);
722ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        }
732ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    }
742ea67003364d8f4a79d6afd624d56709839151eeFan Zhang
752ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    @Override
762ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    public String getPreferenceKey() {
772ea67003364d8f4a79d6afd624d56709839151eeFan Zhang        return "default_payment_app";
782ea67003364d8f4a79d6afd624d56709839151eeFan Zhang    }
792ea67003364d8f4a79d6afd624d56709839151eeFan Zhang}
80