summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorJohn Spurlock <jspurlock@google.com>2015-02-26 14:49:55 -0500
committerJohn Spurlock <jspurlock@google.com>2015-02-26 15:51:11 -0500
commitc72d4cbc818bb5e755e1fd86c9c6c30c4e2375dd (patch)
treebcb33dcab34c557c3546d6ced202c0cc3c7c5a25 /packages
parentcff41ae3635170b93acca5bfd2813b719e060e0f (diff)
downloadframeworks_base-c72d4cbc818bb5e755e1fd86c9c6c30c4e2375dd.zip
frameworks_base-c72d4cbc818bb5e755e1fd86c9c6c30c4e2375dd.tar.gz
frameworks_base-c72d4cbc818bb5e755e1fd86c9c6c30c4e2375dd.tar.bz2
VolumePrototypes: Better handle removals/upgrades.
- Repoke the setting at startup to ensure we have the latest UID. - Automatically restore the default volume UI when the current vcs is uninstalled. Bug: 19260237 Change-Id: Ie1fe356fea08392278340b54230ab429d14e1583
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 8048a48..b9d295c 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
@@ -111,11 +111,11 @@ 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);
} else {
- if (LOGD) Log.d(TAG, "Unregistering volume controller");
+ if (LOGD) Log.d(TAG, "Unregistering default volume controller");
mAudioManager.setVolumeController(null);
mMediaSessionManager.setRemoteVolumeController(null);
}
@@ -258,11 +258,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();