Merge "NfcTile: make sure NFC adapter is always available when needed"
am: 13ade8f910
Change-Id: I731c4d0f3460d1b2a24232a87afcd5c327ecb4b0
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user