From 8f7c40c83430edd3b72aafaf6f71b2f084fe7f27 Mon Sep 17 00:00:00 2001 From: Anas Karbila Date: Thu, 15 Jun 2017 22:36:53 +0900 Subject: [PATCH] NfcTile: make sure NFC adapter is always available when needed Test: enable NFC->reboot->directly open QS panel, NFC tile will show disabled state. This commit fixes it. Change-Id: Iabbe4ec11a38614b9c65627d58c6ee9ec93435f3 --- .../android/systemui/qs/tiles/NfcTile.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java index 9904c6ee438ed..0e19c54caae55 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java @@ -54,13 +54,6 @@ public class NfcTile extends QSTile { if (mListening) { mContext.registerReceiver(mNfcReceiver, new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED)); - if (mAdapter == null) { - try { - mAdapter = NfcAdapter.getNfcAdapter(mContext); - } catch (UnsupportedOperationException e) { - mAdapter = null; - } - } } else { mContext.unregisterReceiver(mNfcReceiver); } @@ -82,12 +75,11 @@ public class NfcTile extends QSTile { @Override protected void handleClick() { - if (mAdapter == null) return; MetricsLogger.action(mContext, getMetricsCategory(), !mState.value); - if (!mAdapter.isEnabled()) { - mAdapter.enable(); + if (!getAdapter().isEnabled()) { + getAdapter().enable(); } else { - mAdapter.disable(); + getAdapter().disable(); } } @@ -105,7 +97,7 @@ public class NfcTile extends QSTile { protected void handleUpdateState(BooleanState state, Object arg) { final Drawable mEnable = mContext.getDrawable(R.drawable.ic_qs_nfc_enabled); final Drawable mDisable = mContext.getDrawable(R.drawable.ic_qs_nfc_disabled); - state.value = mAdapter == null ? false : mAdapter.isEnabled(); + state.value = getAdapter().isEnabled(); state.label = mContext.getString(R.string.quick_settings_nfc_label); state.icon = new DrawableIcon(state.value ? mEnable : mDisable); state.minimalAccessibilityClassName = state.expandedAccessibilityClassName @@ -127,6 +119,17 @@ public class NfcTile extends QSTile { } } + private NfcAdapter getAdapter() { + if (mAdapter == null) { + try { + mAdapter = NfcAdapter.getNfcAdapter(mContext); + } catch (UnsupportedOperationException e) { + mAdapter = null; + } + } + return mAdapter; + } + private BroadcastReceiver mNfcReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) {