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