Merge "DockObserver: Watch for exceptions in LocationManger.isProviderEnabled()."
diff --git a/services/java/com/android/server/DockObserver.java b/services/java/com/android/server/DockObserver.java
index 25ebee4..547a2a1 100644
--- a/services/java/com/android/server/DockObserver.java
+++ b/services/java/com/android/server/DockObserver.java
@@ -421,9 +421,19 @@
                     }
                     break;
                 case MSG_ENABLE_LOCATION_UPDATES:
-                    if (mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
+                    boolean networkLocationEnabled;
+                    try {
+                        networkLocationEnabled =
+                            mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+                    } catch (Exception e) {
+                        // we may get IllegalArgumentException if network location provider
+                        // does not exist or is not yet installed.
+                        networkLocationEnabled = false;
+                    }
+                    if (networkLocationEnabled) {
                         mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
-                                LOCATION_UPDATE_MS, LOCATION_UPDATE_DISTANCE_METER, mLocationListener);
+                                LOCATION_UPDATE_MS, LOCATION_UPDATE_DISTANCE_METER, 
+                                mLocationListener);
                         retrieveLocation();
                         if (mCarModeEnabled && mLocation != null && mNightMode == MODE_NIGHT_AUTO) {
                             try {