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

Commit 77bc30d2 authored by Mike Lockwood's avatar Mike Lockwood
Browse files

SystemUI: Use new USB notifications to detect USB disconnect.



This fixes a bug that prevented the USB mass storage activity from closing
when USB is disconnected.
The bug was actually due to using == for a string compare instead of equals(),
but using the new notifications is a better solution than using battery events
since it will work for devices that do not charge over USB.

BUG: 3018954

Change-Id: Ia447974726a52cd865e59df5af79e828b5134b6c
Signed-off-by: default avatarMike Lockwood <lockwood@android.com>
parent 307aef01
Loading
Loading
Loading
Loading
+9 −8
Original line number Original line Diff line number Diff line
@@ -30,6 +30,7 @@ import android.content.DialogInterface.OnCancelListener;
import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PackageManager.NameNotFoundException;
import android.hardware.Usb;
import android.os.Bundle;
import android.os.Bundle;
import android.os.Environment;
import android.os.Environment;
import android.os.Handler;
import android.os.Handler;
@@ -70,11 +71,11 @@ public class UsbStorageActivity extends Activity
    static final boolean localLOGV = false;
    static final boolean localLOGV = false;


    /** Used to detect when the USB cable is unplugged, so we can call finish() */
    /** Used to detect when the USB cable is unplugged, so we can call finish() */
    private BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() {
    private BroadcastReceiver mUsbStateReceiver = new BroadcastReceiver() {
        @Override
        @Override
        public void onReceive(Context context, Intent intent) {
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction() == Intent.ACTION_BATTERY_CHANGED) {
            if (intent.getAction().equals(Usb.ACTION_USB_STATE)) {
                handleBatteryChanged(intent);
                handleUsbStateChanged(intent);
            }
            }
        }
        }
    };
    };
@@ -139,7 +140,7 @@ public class UsbStorageActivity extends Activity
        super.onResume();
        super.onResume();


        mStorageManager.registerListener(mStorageListener);
        mStorageManager.registerListener(mStorageListener);
        registerReceiver(mBatteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
        registerReceiver(mUsbStateReceiver, new IntentFilter(Usb.ACTION_USB_STATE));
        try {
        try {
            switchDisplay(mStorageManager.isUsbMassStorageEnabled());
            switchDisplay(mStorageManager.isUsbMassStorageEnabled());
        } catch (Exception ex) {
        } catch (Exception ex) {
@@ -151,15 +152,15 @@ public class UsbStorageActivity extends Activity
    protected void onPause() {
    protected void onPause() {
        super.onPause();
        super.onPause();
        
        
        unregisterReceiver(mBatteryReceiver);
        unregisterReceiver(mUsbStateReceiver);
        if (mStorageManager == null && mStorageListener != null) {
        if (mStorageManager == null && mStorageListener != null) {
            mStorageManager.unregisterListener(mStorageListener);
            mStorageManager.unregisterListener(mStorageListener);
        }
        }
    }
    }


    private void handleBatteryChanged(Intent intent) {
    private void handleUsbStateChanged(Intent intent) {
        int pluggedType = intent.getIntExtra("plugged", 0);
        boolean connected = intent.getExtras().getBoolean(Usb.USB_CONNECTED);
        if (pluggedType == 0) {
        if (!connected) {
            // It was disconnected from the plug, so finish
            // It was disconnected from the plug, so finish
            finish();
            finish();
        }
        }