OSDN Git Service

Fixes Settings app crashing when NfcAdapter is null
authorRuchi Kandoi <kandoiruchi@google.com>
Wed, 1 Aug 2018 20:30:35 +0000 (13:30 -0700)
committerRuchi Kandoi <kandoiruchi@google.com>
Wed, 1 Aug 2018 20:35:18 +0000 (13:35 -0700)
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

src/com/android/settings/nfc/AndroidBeam.java
src/com/android/settings/nfc/PaymentDefaultDialog.java

index 452bf91..efa6041 100644 (file)
@@ -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();
index 949f87d..73b92e7 100644 (file)
@@ -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);