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

Commit af5d44e4 authored by John Spurlock's avatar John Spurlock Committed by Android (Google) Code Review
Browse files

Merge "VolumePrototypes: Better handle removals/upgrades."

parents 5bc5d7c4 c72d4cbc
Loading
Loading
Loading
Loading
+19 −6
Original line number Diff line number Diff line
@@ -177,6 +177,7 @@ public class ServiceMonitor {
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_PACKAGE_ADDED);
        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
        filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
        filter.addDataScheme("package");
        mContext.registerReceiver(mBroadcastReceiver, filter);

@@ -196,10 +197,11 @@ public class ServiceMonitor {
                + " extras=" + bundleToString(intent.getExtras()));
        if (Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())) {
            mHandler.sendEmptyMessage(MSG_START_SERVICE);
        } else if (Intent.ACTION_PACKAGE_CHANGED.equals(intent.getAction())) {
            PackageManager pm = mContext.getPackageManager();
            boolean serviceEnabled =
                    pm.getApplicationEnabledSetting(mServiceName.getPackageName())
        } else if (Intent.ACTION_PACKAGE_CHANGED.equals(intent.getAction())
                || Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) {
            final PackageManager pm = mContext.getPackageManager();
            final boolean serviceEnabled = isPackageAvailable()
                    && pm.getApplicationEnabledSetting(mServiceName.getPackageName())
                            != PackageManager.COMPONENT_ENABLED_STATE_DISABLED
                    && pm.getComponentEnabledSetting(mServiceName)
                            != PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
@@ -289,4 +291,15 @@ public class ServiceMonitor {
        Settings.Secure.putStringForUser(mContext.getContentResolver(),
                mSettingKey, setting, UserHandle.USER_CURRENT);
    }

    public boolean isPackageAvailable() {
        final ComponentName component = getComponent();
        if (component == null) return false;
        try {
            return mContext.getPackageManager().isPackageAvailable(component.getPackageName());
        } catch (RuntimeException e) {
            Log.w(mTag, "Error checking package availability", e);
            return false;
        }
    }
}
+7 −2
Original line number Diff line number Diff line
@@ -112,12 +112,12 @@ public class VolumeUI extends SystemUI {

    private void setVolumeController(boolean register) {
        if (register) {
            if (LOGD) Log.d(TAG, "Registering volume controller");
            if (LOGD) Log.d(TAG, "Registering default volume controller");
            mAudioManager.setVolumeController(mVolumeController);
            mMediaSessionManager.setRemoteVolumeController(mRemoteVolumeController);
            DndTile.setVisible(mContext, false);
        } else {
            if (LOGD) Log.d(TAG, "Unregistering volume controller");
            if (LOGD) Log.d(TAG, "Unregistering default volume controller");
            mAudioManager.setVolumeController(null);
            mMediaSessionManager.setRemoteVolumeController(null);
        }
@@ -260,11 +260,16 @@ public class VolumeUI extends SystemUI {
            if (LOGD) Log.d(TAG, "onNoService");
            setVolumeController(true);
            mRestorationNotification.hide();
            if (!mVolumeControllerService.isPackageAvailable()) {
                mVolumeControllerService.setComponent(null);
            }
        }

        @Override
        public long onServiceStartAttempt() {
            if (LOGD) Log.d(TAG, "onServiceStartAttempt");
            // poke the setting to update the uid
            mVolumeControllerService.setComponent(mVolumeControllerService.getComponent());
            setVolumeController(false);
            mVolumeController.dismissNow();
            mRestorationNotification.show();