From: Ruchi Kandoi Date: Wed, 1 Aug 2018 20:30:35 +0000 (-0700) Subject: Fixes Settings app crashing when NfcAdapter is null X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=37efa64d63c3d24170a4deca4eb407f4517edfe1;p=android-x86%2Fpackages-apps-Settings.git Fixes Settings app crashing when NfcAdapter is null If a device doesn't support NFC then android.settings.NFCSHARING_SETTINGS and android.nfc.cardemulation.action.ACTION_CHANGE_DEFAULT intents shouldn't do anything and gracefully exit. Test: Manual; Emulate a non-NFC device and test with apks sending intents Bug: 80094104 Bug: 80092438 Change-Id: I5b3c3fdd582679e2cb16f474ef3331bc246b0d42 --- diff --git a/src/com/android/settings/nfc/AndroidBeam.java b/src/com/android/settings/nfc/AndroidBeam.java index 452bf91cad..efa6041855 100644 --- a/src/com/android/settings/nfc/AndroidBeam.java +++ b/src/com/android/settings/nfc/AndroidBeam.java @@ -53,6 +53,8 @@ public class AndroidBeam extends InstrumentedFragment public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mNfcAdapter = NfcAdapter.getDefaultAdapter(getActivity()); + if (mNfcAdapter == null) + getActivity().finish(); setHasOptionsMenu(true); } @@ -90,7 +92,6 @@ public class AndroidBeam extends InstrumentedFragment @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - SettingsActivity activity = (SettingsActivity) getActivity(); mOldActivityTitle = activity.getActionBar().getTitle(); diff --git a/src/com/android/settings/nfc/PaymentDefaultDialog.java b/src/com/android/settings/nfc/PaymentDefaultDialog.java index 949f87d8b7..73b92e7b6b 100644 --- a/src/com/android/settings/nfc/PaymentDefaultDialog.java +++ b/src/com/android/settings/nfc/PaymentDefaultDialog.java @@ -42,7 +42,11 @@ public final class PaymentDefaultDialog extends AlertActivity implements @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mBackend = new PaymentBackend(this); + try { + mBackend = new PaymentBackend(this); + } catch (NullPointerException e) { + finish(); + } Intent intent = getIntent(); ComponentName component = intent.getParcelableExtra( CardEmulation.EXTRA_SERVICE_COMPONENT);