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

Commit 761ad6ea authored by Sooraj Sasindran's avatar Sooraj Sasindran Committed by Gerrit Code Review
Browse files

Merge "Provide last known cell id for emergency call"

parents a18ff150 81be0822
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -40069,6 +40069,7 @@ package android.telecom {
    field public static final String EXTRA_CHILD_ADDRESS = "android.telecom.extra.CHILD_ADDRESS";
    field public static final String EXTRA_IS_RTT_AUDIO_PRESENT = "android.telecom.extra.IS_RTT_AUDIO_PRESENT";
    field public static final String EXTRA_LAST_FORWARDED_NUMBER = "android.telecom.extra.LAST_FORWARDED_NUMBER";
    field public static final String EXTRA_LAST_KNOWN_CELL_IDENTITY = "android.telecom.extra.LAST_KNOWN_CELL_IDENTITY";
    field public static final String EXTRA_SIP_INVITE = "android.telecom.extra.SIP_INVITE";
    field public static final int PROPERTY_ASSISTED_DIALING = 512; // 0x200
    field public static final int PROPERTY_CROSS_SIM = 8192; // 0x2000
+11 −0
Original line number Diff line number Diff line
@@ -821,6 +821,17 @@ public abstract class Connection extends Conferenceable {
    public static final String EXTRA_AUDIO_CODEC_BANDWIDTH_KHZ =
            "android.telecom.extra.AUDIO_CODEC_BANDWIDTH_KHZ";

    /**
     * Last known cell identity key to be used to fill geo location header in case of an emergency
     * call. This entry will not be filled if call is not identified as an emergency call.
     * {@link Connection}. Only provided to the {@link ConnectionService} for the purpose
     * of placing an emergency call; will not be present in the {@link InCallService} layer.
     * The {@link ConnectionService}'s implementation will be logged for fine location access
     * when an outgoing call is placed in this case.
     */
    public static final String EXTRA_LAST_KNOWN_CELL_IDENTITY =
            "android.telecom.extra.LAST_KNOWN_CELL_IDENTITY";

    /**
     * Boolean connection extra key used to indicate whether device to device communication is
     * available for the current call.
+11 −0
Original line number Diff line number Diff line
@@ -564,6 +564,17 @@ public final class TelephonyPermissions {
        enforceCallingOrSelfCarrierPrivilege(context, subId, message);
    }

    /**
     * Check if the caller (or self, if not processing an IPC) has ACCESS_LAST_KNOWN_CELL_ID
     * permission
     *
     * @return true if caller has ACCESS_LAST_KNOWN_CELL_ID permission else false.
     */
    public static boolean checkLastKnownCellIdAccessPermission(Context context) {
        return context.checkCallingOrSelfPermission("android.permission.ACCESS_LAST_KNOWN_CELL_ID")
                == PackageManager.PERMISSION_GRANTED;
    }

    /**
     * Ensure the caller (or self, if not processing an IPC) has
     * {@link android.Manifest.permission#READ_PHONE_STATE} or carrier privileges.
+27 −0
Original line number Diff line number Diff line
@@ -15805,4 +15805,31 @@ public class TelephonyManager {
            ex.rethrowAsRuntimeException();
        }
    }
    /**
     * Get last known cell identity.
     * Require {@link android.Manifest.permission#ACCESS_FINE_LOCATION} and
     * com.android.phone.permission.ACCESS_LAST_KNOWN_CELL_ID, otherwise throws SecurityException.
     * If there is current registered network this value will be same as the registered cell
     * identity. If the device goes out of service the previous cell identity is cached and
     * will be returned. If the cache age of the Cell identity is more than 24 hours
     * it will be cleared and null will be returned.
     * @return last known cell identity {@CellIdentity}.
     * @hide
     */
    @RequiresPermission(allOf = {Manifest.permission.ACCESS_FINE_LOCATION,
            "com.android.phone.permission.ACCESS_LAST_KNOWN_CELL_ID"})
    public @Nullable CellIdentity getLastKnownCellIdentity() {
        try {
            ITelephony telephony = getITelephony();
            if (telephony == null) {
                throw new IllegalStateException("telephony service is null.");
            }
            return telephony.getLastKnownCellIdentity(getSubId(), getOpPackageName(),
                    getAttributionTag());
        } catch (RemoteException ex) {
            ex.rethrowAsRuntimeException();
        }
        return null;
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -2509,4 +2509,13 @@ interface ITelephony {
     * Unregister an IMS connection state callback
     */
    void unregisterImsStateCallback(in IImsStateCallback cb);

    /**
     * return last known cell identity
     * @param subId user preferred subId.
     * @param callingPackage the name of the package making the call.
     * @param callingFeatureId The feature in the package.
     */
    CellIdentity getLastKnownCellIdentity(int subId, String callingPackage,
            String callingFeatureId);
}