Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dbe2ae3d authored by Mark Renouf's avatar Mark Renouf
Browse files

Fix UsbResolverActivity: SuperNotCalledException

Results in a quick crash of the systemui process when
called with out args. (error path skips super.onCreate)

Unfortunately, broadcast receivers are also registered
in #onCreate, but unregistered in #onStop. Since the
activity is created but not started, stop isn't called
resulting in a leaked receiver. Calling onStop() here
fixes this.

Bug: 201719995
Test: adb shell am start -n
      com.android.systemui/com.android.systemui.usb.UsbResolverActivity
Change-Id: Id76491fe4779df14e54969b9ab04ef2f772c293c
parent 19a969e5
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -63,6 +63,8 @@ public class UsbResolverActivity extends ResolverActivity {
        Intent intent = getIntent();
        Parcelable targetParcelable = intent.getParcelableExtra(Intent.EXTRA_INTENT);
        if (!(targetParcelable instanceof Intent)) {
            super.onCreate(savedInstanceState);
            onStop(); // unregister receiver registered in onCreate (PackageMonitor)
            Log.w("UsbResolverActivity", "Target is not an intent: " + targetParcelable);
            finish();
            return;
@@ -95,6 +97,8 @@ public class UsbResolverActivity extends ResolverActivity {
        } else {
            mAccessory = (UsbAccessory)target.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
            if (mAccessory == null) {
                super.onCreate(savedInstanceState);
                onStop(); // unregister receiver registered in onCreate (PackageMonitor)
                Log.e(TAG, "no device or accessory");
                finish();
                return;