diff options
Diffstat (limited to 'services/java/com/android/server/LocationManagerService.java')
-rw-r--r-- | services/java/com/android/server/LocationManagerService.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index 004fcf1..dd351be 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -27,6 +27,7 @@ import java.util.Observable; import java.util.Observer; import java.util.Set; +import android.app.Activity; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -506,6 +507,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run // Register for Package Manager updates intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED); intentFilter.addAction(Intent.ACTION_PACKAGE_RESTARTED); + intentFilter.addAction(Intent.ACTION_QUERY_PACKAGE_RESTART); mContext.registerReceiver(mBroadcastReceiver, intentFilter); IntentFilter sdFilter = new IntentFilter(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE); mContext.registerReceiver(mBroadcastReceiver, sdFilter); @@ -1539,8 +1541,9 @@ public class LocationManagerService extends ILocationManager.Stub implements Run @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); - - if (action.equals(Intent.ACTION_PACKAGE_REMOVED) + boolean queryRestart = action.equals(Intent.ACTION_QUERY_PACKAGE_RESTART); + if (queryRestart + || action.equals(Intent.ACTION_PACKAGE_REMOVED) || action.equals(Intent.ACTION_PACKAGE_RESTARTED) || action.equals(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE)) { synchronized (mLock) { @@ -1560,6 +1563,10 @@ public class LocationManagerService extends ILocationManager.Stub implements Run for (int j=i.size()-1; j>=0; j--) { UpdateRecord ur = i.get(j); if (ur.mReceiver.isPendingIntent() && ur.mUid == uid) { + if (queryRestart) { + setResultCode(Activity.RESULT_OK); + return; + } if (removedRecs == null) { removedRecs = new ArrayList<Receiver>(); } @@ -1572,6 +1579,10 @@ public class LocationManagerService extends ILocationManager.Stub implements Run ArrayList<ProximityAlert> removedAlerts = null; for (ProximityAlert i : mProximityAlerts.values()) { if (i.mUid == uid) { + if (queryRestart) { + setResultCode(Activity.RESULT_OK); + return; + } if (removedAlerts == null) { removedAlerts = new ArrayList<ProximityAlert>(); } |