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

Commit 8f836b9f authored by Sooraj Sasindran's avatar Sooraj Sasindran Committed by Automerger Merge Worker
Browse files

Provide last known cell id for emergency call am: 8330df01

Original change: https://android-review.googlesource.com/c/platform/packages/services/Telecomm/+/1869707

Change-Id: Iea82cbf715f351d58762c4c82d8fe16da32fd467
parents 2a9007ff 8330df01
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -56,6 +56,7 @@
    <uses-permission android:name="android.permission.READ_BLOCKED_NUMBERS"/>
    <uses-permission android:name="android.permission.READ_BLOCKED_NUMBERS"/>
    <uses-permission android:name="android.permission.WRITE_BLOCKED_NUMBERS"/>
    <uses-permission android:name="android.permission.WRITE_BLOCKED_NUMBERS"/>
    <uses-permission android:name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME"/>
    <uses-permission android:name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME"/>
    <uses-permission android:name="com.android.phone.permission.ACCESS_LAST_KNOWN_CELL_ID"/>


    <permission android:name="android.permission.BROADCAST_CALLLOG_INFO"
    <permission android:name="android.permission.BROADCAST_CALLLOG_INFO"
         android:label="Broadcast the call type/duration information"
         android:label="Broadcast the call type/duration information"
+25 −0
Original line number Original line Diff line number Diff line
@@ -45,6 +45,8 @@ import android.telecom.PhoneAccountHandle;
import android.telecom.StatusHints;
import android.telecom.StatusHints;
import android.telecom.TelecomManager;
import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
import android.telecom.VideoProfile;
import android.telephony.CellIdentity;
import android.telephony.TelephonyManager;


import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telecom.IConnectionService;
import com.android.internal.telecom.IConnectionService;
@@ -1236,6 +1238,24 @@ public class ConnectionServiceWrapper extends ServiceBinder implements
        }
        }
    }
    }


    private CellIdentity getLastKnownCellIdentity() {
        TelephonyManager telephonyManager = mContext.getSystemService(TelephonyManager.class);
        if (telephonyManager != null) {
            CellIdentity lastKnownCellIdentity = telephonyManager.getLastKnownCellIdentity();
            try {
                mAppOpsManager.noteOp(AppOpsManager.OP_FINE_LOCATION,
                        mContext.getPackageManager().getPackageUid(
                                getComponentName().getPackageName(), 0),
                        getComponentName().getPackageName());
            } catch (PackageManager.NameNotFoundException nameNotFoundException) {
                Log.e(this, nameNotFoundException, "could not find the package -- %s",
                        getComponentName().getPackageName());
            }
            return lastKnownCellIdentity;
        }
        return null;
    }

    /**
    /**
     * Creates a conference for a new outgoing call or attach to an existing incoming call.
     * Creates a conference for a new outgoing call or attach to an existing incoming call.
     */
     */
@@ -1355,6 +1375,11 @@ public class ConnectionServiceWrapper extends ServiceBinder implements
                        Log.piiHandle(call.getHandle()) + " via:" +
                        Log.piiHandle(call.getHandle()) + " via:" +
                                getComponentName().getPackageName());
                                getComponentName().getPackageName());


                if (call.isEmergencyCall()) {
                    extras.putParcelable(Connection.EXTRA_LAST_KNOWN_CELL_IDENTITY,
                            getLastKnownCellIdentity());
                }

                ConnectionRequest connectionRequest = new ConnectionRequest.Builder()
                ConnectionRequest connectionRequest = new ConnectionRequest.Builder()
                        .setAccountHandle(call.getTargetPhoneAccount())
                        .setAccountHandle(call.getTargetPhoneAccount())
                        .setAddress(call.getHandle())
                        .setAddress(call.getHandle())