Loading services/core/java/com/android/server/LocationManagerService.java +6 −3 Original line number Diff line number Diff line Loading @@ -960,7 +960,8 @@ public class LocationManagerService extends ILocationManager.Stub { // synchronize to ensure incrementPendingBroadcastsLocked() // is called before decrementPendingBroadcasts() mPendingIntent.send(mContext, 0, statusChanged, this, mLocationHandler, getResolutionPermission(mAllowedResolutionLevel)); getResolutionPermission(mAllowedResolutionLevel), PendingIntentUtils.createDontSendToRestrictedAppsBundle(null)); // call this after broadcasting so we do not increment // if we throw an exeption. incrementPendingBroadcastsLocked(); Loading Loading @@ -995,7 +996,8 @@ public class LocationManagerService extends ILocationManager.Stub { // synchronize to ensure incrementPendingBroadcastsLocked() // is called before decrementPendingBroadcasts() mPendingIntent.send(mContext, 0, locationChanged, this, mLocationHandler, getResolutionPermission(mAllowedResolutionLevel)); getResolutionPermission(mAllowedResolutionLevel), PendingIntentUtils.createDontSendToRestrictedAppsBundle(null)); // call this after broadcasting so we do not increment // if we throw an exeption. incrementPendingBroadcastsLocked(); Loading Loading @@ -1037,7 +1039,8 @@ public class LocationManagerService extends ILocationManager.Stub { // synchronize to ensure incrementPendingBroadcastsLocked() // is called before decrementPendingBroadcasts() mPendingIntent.send(mContext, 0, providerIntent, this, mLocationHandler, getResolutionPermission(mAllowedResolutionLevel)); getResolutionPermission(mAllowedResolutionLevel), PendingIntentUtils.createDontSendToRestrictedAppsBundle(null)); // call this after broadcasting so we do not increment // if we throw an exeption. incrementPendingBroadcastsLocked(); Loading services/core/java/com/android/server/PendingIntentUtils.java 0 → 100644 +46 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server; import android.annotation.Nullable; import android.app.BroadcastOptions; import android.os.Bundle; /** * Some utility methods for system server. * @hide */ public class PendingIntentUtils { /** * Creates a Bundle that can be used to restrict the background PendingIntents. * @param bundle when provided, will merge the extra options to restrict background * PendingIntent into the existing bundle. * @return the created Bundle. */ public static Bundle createDontSendToRestrictedAppsBundle(@Nullable Bundle bundle) { final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setDontSendToRestrictedApps(true); if (bundle == null) { return options.toBundle(); } bundle.putAll(options.toBundle()); return bundle; } // Disable the constructor. private PendingIntentUtils() {} } services/core/java/com/android/server/location/GeofenceManager.java +3 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.provider.Settings; import android.util.Slog; import com.android.server.LocationManagerService; import com.android.server.PendingIntentUtils; public class GeofenceManager implements LocationListener, PendingIntent.OnFinished { private static final String TAG = "GeofenceManager"; Loading Loading @@ -401,7 +402,8 @@ public class GeofenceManager implements LocationListener, PendingIntent.OnFinish mWakeLock.acquire(); try { pendingIntent.send(mContext, 0, intent, this, null, android.Manifest.permission.ACCESS_FINE_LOCATION); android.Manifest.permission.ACCESS_FINE_LOCATION, PendingIntentUtils.createDontSendToRestrictedAppsBundle(null)); } catch (PendingIntent.CanceledException e) { removeFence(null, pendingIntent); mWakeLock.release(); Loading Loading
services/core/java/com/android/server/LocationManagerService.java +6 −3 Original line number Diff line number Diff line Loading @@ -960,7 +960,8 @@ public class LocationManagerService extends ILocationManager.Stub { // synchronize to ensure incrementPendingBroadcastsLocked() // is called before decrementPendingBroadcasts() mPendingIntent.send(mContext, 0, statusChanged, this, mLocationHandler, getResolutionPermission(mAllowedResolutionLevel)); getResolutionPermission(mAllowedResolutionLevel), PendingIntentUtils.createDontSendToRestrictedAppsBundle(null)); // call this after broadcasting so we do not increment // if we throw an exeption. incrementPendingBroadcastsLocked(); Loading Loading @@ -995,7 +996,8 @@ public class LocationManagerService extends ILocationManager.Stub { // synchronize to ensure incrementPendingBroadcastsLocked() // is called before decrementPendingBroadcasts() mPendingIntent.send(mContext, 0, locationChanged, this, mLocationHandler, getResolutionPermission(mAllowedResolutionLevel)); getResolutionPermission(mAllowedResolutionLevel), PendingIntentUtils.createDontSendToRestrictedAppsBundle(null)); // call this after broadcasting so we do not increment // if we throw an exeption. incrementPendingBroadcastsLocked(); Loading Loading @@ -1037,7 +1039,8 @@ public class LocationManagerService extends ILocationManager.Stub { // synchronize to ensure incrementPendingBroadcastsLocked() // is called before decrementPendingBroadcasts() mPendingIntent.send(mContext, 0, providerIntent, this, mLocationHandler, getResolutionPermission(mAllowedResolutionLevel)); getResolutionPermission(mAllowedResolutionLevel), PendingIntentUtils.createDontSendToRestrictedAppsBundle(null)); // call this after broadcasting so we do not increment // if we throw an exeption. incrementPendingBroadcastsLocked(); Loading
services/core/java/com/android/server/PendingIntentUtils.java 0 → 100644 +46 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server; import android.annotation.Nullable; import android.app.BroadcastOptions; import android.os.Bundle; /** * Some utility methods for system server. * @hide */ public class PendingIntentUtils { /** * Creates a Bundle that can be used to restrict the background PendingIntents. * @param bundle when provided, will merge the extra options to restrict background * PendingIntent into the existing bundle. * @return the created Bundle. */ public static Bundle createDontSendToRestrictedAppsBundle(@Nullable Bundle bundle) { final BroadcastOptions options = BroadcastOptions.makeBasic(); options.setDontSendToRestrictedApps(true); if (bundle == null) { return options.toBundle(); } bundle.putAll(options.toBundle()); return bundle; } // Disable the constructor. private PendingIntentUtils() {} }
services/core/java/com/android/server/location/GeofenceManager.java +3 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.provider.Settings; import android.util.Slog; import com.android.server.LocationManagerService; import com.android.server.PendingIntentUtils; public class GeofenceManager implements LocationListener, PendingIntent.OnFinished { private static final String TAG = "GeofenceManager"; Loading Loading @@ -401,7 +402,8 @@ public class GeofenceManager implements LocationListener, PendingIntent.OnFinish mWakeLock.acquire(); try { pendingIntent.send(mContext, 0, intent, this, null, android.Manifest.permission.ACCESS_FINE_LOCATION); android.Manifest.permission.ACCESS_FINE_LOCATION, PendingIntentUtils.createDontSendToRestrictedAppsBundle(null)); } catch (PendingIntent.CanceledException e) { removeFence(null, pendingIntent); mWakeLock.release(); Loading