Merge change 23811 into eclair
* changes:
Fix the registration of the package changes broadcast receiver.
diff --git a/core/java/android/content/pm/RegisteredServicesCache.java b/core/java/android/content/pm/RegisteredServicesCache.java
index 342de2b..f5f8f30 100644
--- a/core/java/android/content/pm/RegisteredServicesCache.java
+++ b/core/java/android/content/pm/RegisteredServicesCache.java
@@ -54,7 +54,7 @@
private final String mAttributesName;
// no need to be synchronized since the map is never changed once mService is written
- private volatile Map<V, ServiceInfo<V>> mServices;
+ volatile Map<V, ServiceInfo<V>> mServices;
// synchronized on "this"
private BroadcastReceiver mReceiver = null;
@@ -81,6 +81,7 @@
if (mReceiver == null) {
synchronized (this) {
mReceiver = new BroadcastReceiver() {
+ @Override
public void onReceive(Context context, Intent intent) {
mServices = generateServicesMap();
}
@@ -91,6 +92,7 @@
intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
intentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+ intentFilter.addDataScheme("package");
mContext.registerReceiver(mReceiver, intentFilter);
return true;
}
@@ -122,6 +124,7 @@
this.uid = uid;
}
+ @Override
public String toString() {
return "ServiceInfo: " + type + ", " + componentName;
}
@@ -159,6 +162,7 @@
maybeUnregisterForPackageChanges();
}
+ @Override
protected void finalize() throws Throwable {
synchronized (this) {
if (mReceiver != null) {
@@ -169,7 +173,7 @@
super.finalize();
}
- private Map<V, ServiceInfo<V>> generateServicesMap() {
+ Map<V, ServiceInfo<V>> generateServicesMap() {
Map<V, ServiceInfo<V>> services = Maps.newHashMap();
PackageManager pm = mContext.getPackageManager();