summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorJohn Spurlock <jspurlock@google.com>2015-02-26 20:54:12 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-02-26 20:54:14 +0000
commitaf5d44e441e8fe77d896a834a4d3d219c06df63c (patch)
tree8ad9070d04419b6a4caceb594d38609223b2a29b /packages
parent5bc5d7c45f4a0f6e556200051b96b7870553b06f (diff)
parentc72d4cbc818bb5e755e1fd86c9c6c30c4e2375dd (diff)
downloadframeworks_base-af5d44e441e8fe77d896a834a4d3d219c06df63c.zip
frameworks_base-af5d44e441e8fe77d896a834a4d3d219c06df63c.tar.gz
frameworks_base-af5d44e441e8fe77d896a834a4d3d219c06df63c.tar.bz2
Merge "VolumePrototypes: Better handle removals/upgrades."
Diffstat (limited to 'packages')
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ServiceMonitor.java25
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java9
2 files changed, 26 insertions, 8 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ServiceMonitor.java b/packages/SystemUI/src/com/android/systemui/statusbar/ServiceMonitor.java
index 69a4932..602989a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ServiceMonitor.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ServiceMonitor.java
@@ -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,13 +197,14 @@ 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())
- != PackageManager.COMPONENT_ENABLED_STATE_DISABLED
+ } 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;
+ != PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
if (mBound && !serviceEnabled) {
stopService();
scheduleCheckBound();
@@ -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;
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
index 97ebbf1..f7f3bd8 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
@@ -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();