Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b7682b0 authored by Nathan Harold's avatar Nathan Harold Committed by Automerger Merge Worker
Browse files

Add Location Checks on CellLocation#requestLocationUpdate am: 32deda2d am:...

Add Location Checks on CellLocation#requestLocationUpdate am: 32deda2d am: 3b7647b8 am: b169887a am: cf4bcdca am: e63cf870

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1355807

Change-Id: Iec22786a5ad824d3f5e791ffbc2b47be81c22a2d
parents 935fff09 e63cf870
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -16,7 +16,9 @@

package android.telephony;

import android.app.ActivityThread;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.os.Bundle;
import android.os.RemoteException;
import android.telephony.cdma.CdmaCellLocation;
@@ -31,11 +33,25 @@ import com.android.internal.telephony.PhoneConstants;
public abstract class CellLocation {

    /**
     * Request an update of the current location.  If the location has changed,
     * a broadcast will be sent to everyone registered with {@link
     * PhoneStateListener#LISTEN_CELL_LOCATION}.
     * This method will not do anything.
     *
     * Whenever location changes, a callback will automatically be be sent to
     * all registrants of {@link PhoneStateListener#LISTEN_CELL_LOCATION}.
     *
     * <p>This method is a no-op for callers targeting SDK level 31 or greater.
     * <p>This method is a no-op for callers that target SDK level 29 or 30 and lack
     * {@link android.Manifest.permission#ACCESS_FINE_LOCATION}.
     * <p>This method is a no-op for callers that target SDK level 28 or below and lack
     * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}.
     *
     * Callers wishing to request a single location update should use
     * {@link TelephonyManager#requestCellInfoUpdate}.
     */
    public static void requestLocationUpdate() {
        // Since this object doesn't have a context, this is the best we can do.
        final Context appContext = ActivityThread.currentApplication();
        if (appContext == null) return; // should never happen

        try {
            ITelephony phone = ITelephony.Stub.asInterface(
                    TelephonyFrameworkInitializer
@@ -43,7 +59,7 @@ public abstract class CellLocation {
                            .getTelephonyServiceRegisterer()
                            .get());
            if (phone != null) {
                phone.updateServiceLocation();
                phone.updateServiceLocationWithPackageName(appContext.getOpPackageName());
            }
        } catch (RemoteException ex) {
            // ignore it
+5 −0
Original line number Diff line number Diff line
@@ -227,6 +227,11 @@ interface ITelephony {
    @UnsupportedAppUsage
    void updateServiceLocation();

    /**
     * Version of updateServiceLocation that records the caller and validates permissions.
     */
    void updateServiceLocationWithPackageName(String callingPkg);

    /**
     * Request to update location information for a subscrition in service state
     * @param subId user preferred subId.