Send MODE_CHANGING broadcast before location mode change.
When location mode is about to change in Settings app, send MODE_CHANGING broadcast. Fixes: 28057031 Test: manual Test: robotests Change-Id: I430941915daedf13e7b5d22dc8a6e37729d95b75
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
*/
|
||||
package com.android.settings.location;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.Manifest.permission;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
@@ -32,6 +33,8 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||
import com.android.settingslib.core.lifecycle.events.OnPause;
|
||||
import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||
|
||||
import static com.android.settingslib.Utils.updateLocationMode;
|
||||
|
||||
/**
|
||||
* A class that listens to location settings change and modifies location settings
|
||||
* settings.
|
||||
@@ -40,11 +43,6 @@ public class LocationEnabler implements LifecycleObserver, OnResume, OnPause {
|
||||
|
||||
private static final String TAG = "LocationEnabler";
|
||||
@VisibleForTesting
|
||||
static final String MODE_CHANGING_ACTION =
|
||||
"com.android.settings.location.MODE_CHANGING";
|
||||
private static final String CURRENT_MODE_KEY = "CURRENT_MODE";
|
||||
private static final String NEW_MODE_KEY = "NEW_MODE";
|
||||
@VisibleForTesting
|
||||
static final IntentFilter INTENT_FILTER_LOCATION_MODE_CHANGED =
|
||||
new IntentFilter(LocationManager.MODE_CHANGED_ACTION);
|
||||
|
||||
@@ -122,7 +120,7 @@ public class LocationEnabler implements LifecycleObserver, OnResume, OnPause {
|
||||
return;
|
||||
}
|
||||
|
||||
updateLocationMode(currentMode, mode);
|
||||
updateLocationMode(mContext, currentMode, mode, ActivityManager.getCurrentUser());
|
||||
refreshLocationMode();
|
||||
}
|
||||
|
||||
@@ -154,13 +152,4 @@ public class LocationEnabler implements LifecycleObserver, OnResume, OnPause {
|
||||
private boolean isRestricted() {
|
||||
return mUserManager.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION);
|
||||
}
|
||||
|
||||
private boolean updateLocationMode(int oldMode, int newMode) {
|
||||
final Intent intent = new Intent(MODE_CHANGING_ACTION);
|
||||
intent.putExtra(CURRENT_MODE_KEY, oldMode);
|
||||
intent.putExtra(NEW_MODE_KEY, newMode);
|
||||
mContext.sendBroadcast(intent, permission.WRITE_SECURE_SETTINGS);
|
||||
return Settings.Secure.putInt(
|
||||
mContext.getContentResolver(), Settings.Secure.LOCATION_MODE, newMode);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user