Merge "NfcTile: make sure NFC adapter is always available when needed"

am: 13ade8f910

Change-Id: I731c4d0f3460d1b2a24232a87afcd5c327ecb4b0
This commit is contained in:
Jason Monk
2017-06-15 15:32:26 +00:00
committed by android-build-merger

View File

@@ -54,13 +54,6 @@ public class NfcTile extends QSTile<QSTile.BooleanState> {
if (mListening) { if (mListening) {
mContext.registerReceiver(mNfcReceiver, mContext.registerReceiver(mNfcReceiver,
new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED)); new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED));
if (mAdapter == null) {
try {
mAdapter = NfcAdapter.getNfcAdapter(mContext);
} catch (UnsupportedOperationException e) {
mAdapter = null;
}
}
} else { } else {
mContext.unregisterReceiver(mNfcReceiver); mContext.unregisterReceiver(mNfcReceiver);
} }
@@ -82,12 +75,11 @@ public class NfcTile extends QSTile<QSTile.BooleanState> {
@Override @Override
protected void handleClick() { protected void handleClick() {
if (mAdapter == null) return;
MetricsLogger.action(mContext, getMetricsCategory(), !mState.value); MetricsLogger.action(mContext, getMetricsCategory(), !mState.value);
if (!mAdapter.isEnabled()) { if (!getAdapter().isEnabled()) {
mAdapter.enable(); getAdapter().enable();
} else { } else {
mAdapter.disable(); getAdapter().disable();
} }
} }
@@ -105,7 +97,7 @@ public class NfcTile extends QSTile<QSTile.BooleanState> {
protected void handleUpdateState(BooleanState state, Object arg) { protected void handleUpdateState(BooleanState state, Object arg) {
final Drawable mEnable = mContext.getDrawable(R.drawable.ic_qs_nfc_enabled); final Drawable mEnable = mContext.getDrawable(R.drawable.ic_qs_nfc_enabled);
final Drawable mDisable = mContext.getDrawable(R.drawable.ic_qs_nfc_disabled); 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.label = mContext.getString(R.string.quick_settings_nfc_label);
state.icon = new DrawableIcon(state.value ? mEnable : mDisable); state.icon = new DrawableIcon(state.value ? mEnable : mDisable);
state.minimalAccessibilityClassName = state.expandedAccessibilityClassName state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
@@ -127,6 +119,17 @@ public class NfcTile extends QSTile<QSTile.BooleanState> {
} }
} }
private NfcAdapter getAdapter() {
if (mAdapter == null) {
try {
mAdapter = NfcAdapter.getNfcAdapter(mContext);
} catch (UnsupportedOperationException e) {
mAdapter = null;
}
}
return mAdapter;
}
private BroadcastReceiver mNfcReceiver = new BroadcastReceiver() { private BroadcastReceiver mNfcReceiver = new BroadcastReceiver() {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {