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

Commit be34c701 authored by Nathan Harold's avatar Nathan Harold Committed by Android (Google) Code Review
Browse files

Merge "Expose PreciseDataConnectionState to Public API" into qt-qpr1-dev-plus-aosp

parents ec299a67 c95b4e54
Loading
Loading
Loading
Loading
+13 −0
Original line number Original line Diff line number Diff line
@@ -44768,6 +44768,7 @@ package android.telephony {
    method public void onDataConnectionStateChanged(int);
    method public void onDataConnectionStateChanged(int);
    method public void onDataConnectionStateChanged(int, int);
    method public void onDataConnectionStateChanged(int, int);
    method public void onMessageWaitingIndicatorChanged(boolean);
    method public void onMessageWaitingIndicatorChanged(boolean);
    method @RequiresPermission("android.permission.MODIFY_PHONE_STATE") public void onPreciseDataConnectionStateChanged(@NonNull android.telephony.PreciseDataConnectionState);
    method public void onServiceStateChanged(android.telephony.ServiceState);
    method public void onServiceStateChanged(android.telephony.ServiceState);
    method @Deprecated public void onSignalStrengthChanged(int);
    method @Deprecated public void onSignalStrengthChanged(int);
    method public void onSignalStrengthsChanged(android.telephony.SignalStrength);
    method public void onSignalStrengthsChanged(android.telephony.SignalStrength);
@@ -44782,12 +44783,23 @@ package android.telephony {
    field public static final int LISTEN_EMERGENCY_NUMBER_LIST = 16777216; // 0x1000000
    field public static final int LISTEN_EMERGENCY_NUMBER_LIST = 16777216; // 0x1000000
    field public static final int LISTEN_MESSAGE_WAITING_INDICATOR = 4; // 0x4
    field public static final int LISTEN_MESSAGE_WAITING_INDICATOR = 4; // 0x4
    field public static final int LISTEN_NONE = 0; // 0x0
    field public static final int LISTEN_NONE = 0; // 0x0
    field @RequiresPermission("android.permission.MODIFY_PHONE_STATE") public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 4096; // 0x1000
    field public static final int LISTEN_SERVICE_STATE = 1; // 0x1
    field public static final int LISTEN_SERVICE_STATE = 1; // 0x1
    field @Deprecated public static final int LISTEN_SIGNAL_STRENGTH = 2; // 0x2
    field @Deprecated public static final int LISTEN_SIGNAL_STRENGTH = 2; // 0x2
    field public static final int LISTEN_SIGNAL_STRENGTHS = 256; // 0x100
    field public static final int LISTEN_SIGNAL_STRENGTHS = 256; // 0x100
    field public static final int LISTEN_USER_MOBILE_DATA_STATE = 524288; // 0x80000
    field public static final int LISTEN_USER_MOBILE_DATA_STATE = 524288; // 0x80000
  }
  }
  public final class PreciseDataConnectionState implements android.os.Parcelable {
    method public int describeContents();
    method public int getLastCauseCode();
    method @Nullable public android.net.LinkProperties getLinkProperties();
    method public int getNetworkType();
    method public int getState();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PreciseDataConnectionState> CREATOR;
  }
  public final class RadioAccessSpecifier implements android.os.Parcelable {
  public final class RadioAccessSpecifier implements android.os.Parcelable {
    ctor public RadioAccessSpecifier(int, int[], int[]);
    ctor public RadioAccessSpecifier(int, int[], int[]);
    method public int describeContents();
    method public int describeContents();
@@ -45292,6 +45304,7 @@ package android.telephony {
    field public static final int DATA_CONNECTED = 2; // 0x2
    field public static final int DATA_CONNECTED = 2; // 0x2
    field public static final int DATA_CONNECTING = 1; // 0x1
    field public static final int DATA_CONNECTING = 1; // 0x1
    field public static final int DATA_DISCONNECTED = 0; // 0x0
    field public static final int DATA_DISCONNECTED = 0; // 0x0
    field public static final int DATA_DISCONNECTING = 4; // 0x4
    field public static final int DATA_SUSPENDED = 3; // 0x3
    field public static final int DATA_SUSPENDED = 3; // 0x3
    field public static final int DATA_UNKNOWN = -1; // 0xffffffff
    field public static final int DATA_UNKNOWN = -1; // 0xffffffff
    field public static final String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT";
    field public static final String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT";
+6 −9
Original line number Original line Diff line number Diff line
@@ -8568,7 +8568,6 @@ package android.telephony {
    method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber);
    method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber);
    method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber);
    method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber);
    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseCallStateChanged(@NonNull android.telephony.PreciseCallState);
    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseCallStateChanged(@NonNull android.telephony.PreciseCallState);
    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseDataConnectionStateChanged(@NonNull android.telephony.PreciseDataConnectionState);
    method public void onRadioPowerStateChanged(int);
    method public void onRadioPowerStateChanged(int);
    method public void onSrvccStateChanged(int);
    method public void onSrvccStateChanged(int);
    method public void onVoiceActivationStateChanged(int);
    method public void onVoiceActivationStateChanged(int);
@@ -8578,7 +8577,6 @@ package android.telephony {
    field @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public static final int LISTEN_OUTGOING_EMERGENCY_CALL = 268435456; // 0x10000000
    field @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public static final int LISTEN_OUTGOING_EMERGENCY_CALL = 268435456; // 0x10000000
    field @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public static final int LISTEN_OUTGOING_EMERGENCY_SMS = 536870912; // 0x20000000
    field @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public static final int LISTEN_OUTGOING_EMERGENCY_SMS = 536870912; // 0x20000000
    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_PRECISE_CALL_STATE = 2048; // 0x800
    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_PRECISE_CALL_STATE = 2048; // 0x800
    field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 4096; // 0x1000
    field public static final int LISTEN_RADIO_POWER_STATE_CHANGED = 8388608; // 0x800000
    field public static final int LISTEN_RADIO_POWER_STATE_CHANGED = 8388608; // 0x800000
    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_SRVCC_STATE_CHANGED = 16384; // 0x4000
    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_SRVCC_STATE_CHANGED = 16384; // 0x4000
    field public static final int LISTEN_VOICE_ACTIVATION_STATE = 131072; // 0x20000
    field public static final int LISTEN_VOICE_ACTIVATION_STATE = 131072; // 0x20000
@@ -8604,13 +8602,12 @@ package android.telephony {
  }
  }
  public final class PreciseDataConnectionState implements android.os.Parcelable {
  public final class PreciseDataConnectionState implements android.os.Parcelable {
    method public int describeContents();
    method @Deprecated @NonNull public String getDataConnectionApn();
    method @Nullable public String getDataConnectionApn();
    method @Deprecated public int getDataConnectionApnTypeBitMask();
    method public int getDataConnectionApnTypeBitMask();
    method @Deprecated public int getDataConnectionFailCause();
    method public int getDataConnectionFailCause();
    method @Deprecated @Nullable public android.net.LinkProperties getDataConnectionLinkProperties();
    method public int getDataConnectionState();
    method @Deprecated public int getDataConnectionNetworkType();
    method public void writeToParcel(android.os.Parcel, int);
    method @Deprecated public int getDataConnectionState();
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PreciseDataConnectionState> CREATOR;
  }
  }
  public final class PreciseDisconnectCause {
  public final class PreciseDisconnectCause {
+4 −0
Original line number Original line Diff line number Diff line
@@ -3004,6 +3004,10 @@ package android.telephony {
    field @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public static final int LISTEN_OUTGOING_EMERGENCY_SMS = 536870912; // 0x20000000
    field @RequiresPermission("android.permission.READ_ACTIVE_EMERGENCY_SESSION") public static final int LISTEN_OUTGOING_EMERGENCY_SMS = 536870912; // 0x20000000
  }
  }


  public final class PreciseDataConnectionState implements android.os.Parcelable {
    ctor @Deprecated public PreciseDataConnectionState(int, int, int, @NonNull String, @Nullable android.net.LinkProperties, int);
  }

  public class ServiceState implements android.os.Parcelable {
  public class ServiceState implements android.os.Parcelable {
    method public void addNetworkRegistrationInfo(android.telephony.NetworkRegistrationInfo);
    method public void addNetworkRegistrationInfo(android.telephony.NetworkRegistrationInfo);
    method public void setCdmaSystemAndNetworkId(int, int);
    method public void setCdmaSystemAndNetworkId(int, int);
+29 −16
Original line number Original line Diff line number Diff line
@@ -35,8 +35,8 @@ import android.telephony.Annotation.SrvccState;
import android.telephony.emergency.EmergencyNumber;
import android.telephony.emergency.EmergencyNumber;
import android.telephony.ims.ImsReasonInfo;
import android.telephony.ims.ImsReasonInfo;


import com.android.internal.telephony.IPhoneStateListener;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.IPhoneStateListener;


import dalvik.system.VMRuntime;
import dalvik.system.VMRuntime;


@@ -188,12 +188,13 @@ public class PhoneStateListener {
    /**
    /**
     * Listen for {@link PreciseDataConnectionState} on the data connection (cellular).
     * Listen for {@link PreciseDataConnectionState} on the data connection (cellular).
     *
     *
     * @see #onPreciseDataConnectionStateChanged
     * <p>Requires permission {@link android.Manifest.permission#MODIFY_PHONE_STATE}
     * or the calling app has carrier privileges
     * (see {@link TelephonyManager#hasCarrierPrivileges}).
     *
     *
     * @hide
     * @see #onPreciseDataConnectionStateChanged
     */
     */
    @RequiresPermission((android.Manifest.permission.READ_PRECISE_PHONE_STATE))
    @RequiresPermission((android.Manifest.permission.MODIFY_PHONE_STATE))
    @SystemApi
    public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE            = 0x00001000;
    public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE            = 0x00001000;


    /**
    /**
@@ -688,8 +689,9 @@ public class PhoneStateListener {
    }
    }


    /**
    /**
     * Callback invoked when data connection state changes with precise information
     * Callback providing update about the default/internet data connection on the registered
     * on the registered subscription.
     * subscription.
     *
     * Note, the registration subId comes from {@link TelephonyManager} object which registers
     * Note, the registration subId comes from {@link TelephonyManager} object which registers
     * PhoneStateListener by {@link TelephonyManager#listen(PhoneStateListener, int)}.
     * PhoneStateListener by {@link TelephonyManager#listen(PhoneStateListener, int)}.
     * If this TelephonyManager object was created with
     * If this TelephonyManager object was created with
@@ -697,12 +699,13 @@ public class PhoneStateListener {
     * subId. Otherwise, this callback applies to
     * subId. Otherwise, this callback applies to
     * {@link SubscriptionManager#getDefaultSubscriptionId()}.
     * {@link SubscriptionManager#getDefaultSubscriptionId()}.
     *
     *
     * @param dataConnectionState {@link PreciseDataConnectionState}
     * <p>Requires permission {@link android.Manifest.permission#MODIFY_PHONE_STATE}
     * or the calling app has carrier privileges
     * (see {@link TelephonyManager#hasCarrierPrivileges}).
     *
     *
     * @hide
     * @param dataConnectionState {@link PreciseDataConnectionState}
     */
     */
    @RequiresPermission((android.Manifest.permission.READ_PRECISE_PHONE_STATE))
    @RequiresPermission((android.Manifest.permission.MODIFY_PHONE_STATE))
    @SystemApi
    public void onPreciseDataConnectionStateChanged(
    public void onPreciseDataConnectionStateChanged(
            @NonNull PreciseDataConnectionState dataConnectionState) {
            @NonNull PreciseDataConnectionState dataConnectionState) {
        // default implementation empty
        // default implementation empty
@@ -1011,12 +1014,22 @@ public class PhoneStateListener {
            PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
            PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
            if (psl == null) return;
            if (psl == null) return;


            if (state == TelephonyManager.DATA_DISCONNECTING
                    && VMRuntime.getRuntime().getTargetSdkVersion() < Build.VERSION_CODES.R) {
                Binder.withCleanCallingIdentity(() -> mExecutor.execute(
                        () -> {
                            psl.onDataConnectionStateChanged(
                                    TelephonyManager.DATA_CONNECTED, networkType);
                            psl.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED);
                        }));
            } else {
                Binder.withCleanCallingIdentity(() -> mExecutor.execute(
                Binder.withCleanCallingIdentity(() -> mExecutor.execute(
                        () -> {
                        () -> {
                            psl.onDataConnectionStateChanged(state, networkType);
                            psl.onDataConnectionStateChanged(state, networkType);
                            psl.onDataConnectionStateChanged(state);
                            psl.onDataConnectionStateChanged(state);
                        }));
                        }));
            }
            }
        }


        public void onDataActivity(int direction) {
        public void onDataActivity(int direction) {
            PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
            PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
+8 −40
Original line number Original line Diff line number Diff line
@@ -21,19 +21,15 @@ import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.annotation.TestApi;
import android.content.Context;
import android.content.Context;
import android.net.LinkProperties;
import android.net.NetworkCapabilities;
import android.os.Binder;
import android.os.Binder;
import android.os.Bundle;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.HandlerExecutor;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceManager;
import android.telephony.Annotation.ApnType;
import android.telephony.Annotation.CallState;
import android.telephony.Annotation.CallState;
import android.telephony.Annotation.DataActivityType;
import android.telephony.Annotation.DataActivityType;
import android.telephony.Annotation.DataFailureCause;
import android.telephony.Annotation.DataFailureCause;
import android.telephony.Annotation.DataState;
import android.telephony.Annotation.NetworkType;
import android.telephony.Annotation.NetworkType;
import android.telephony.Annotation.PreciseCallStates;
import android.telephony.Annotation.PreciseCallStates;
import android.telephony.Annotation.RadioPowerState;
import android.telephony.Annotation.RadioPowerState;
@@ -365,27 +361,18 @@ public class TelephonyRegistryManager {
     * @param subId for which data connection state changed.
     * @param subId for which data connection state changed.
     * @param slotIndex for which data connections state changed. Can be derived from subId except
     * @param slotIndex for which data connections state changed. Can be derived from subId except
     * when subId is invalid.
     * when subId is invalid.
     * @param state latest data connection state, e.g,
     * @param apnType the APN type that triggered this update
     * @param isDataConnectivityPossible indicates if data is allowed
     * @param preciseState the PreciseDataConnectionState
     * @param apn the APN {@link ApnSetting#getApnName()} of this data connection.
     * @param apnType the apnType, "ims" for IMS APN, "emergency" for EMERGENCY APN.
     * @param linkProperties {@link LinkProperties} associated with this data connection.
     * @param networkCapabilities {@link NetworkCapabilities} associated with this data connection.
     * @param networkType associated with this data connection.
     * @param roaming {@code true} indicates in roaming, {@false} otherwise.
     * @see TelephonyManager#DATA_DISCONNECTED
     * @see TelephonyManager#isDataConnectivityPossible()
     *
     *
     * @see android.telephony.PreciseDataConnection
     * @see TelephonyManager#DATA_DISCONNECTED
     * @hide
     * @hide
     */
     */
    public void notifyDataConnectionForSubscriber(int slotIndex, int subId, @DataState int state,
    public void notifyDataConnectionForSubscriber(int slotIndex, int subId,
        boolean isDataConnectivityPossible,
            String apnType, PreciseDataConnectionState preciseState) {
        @ApnType String apn, String apnType, LinkProperties linkProperties,
        NetworkCapabilities networkCapabilities, int networkType, boolean roaming) {
        try {
        try {
            sRegistry.notifyDataConnectionForSubscriber(slotIndex, subId, state,
            sRegistry.notifyDataConnectionForSubscriber(
                isDataConnectivityPossible,
                    slotIndex, subId, apnType, preciseState);
                apn, apnType, linkProperties, networkCapabilities, networkType, roaming);
        } catch (RemoteException ex) {
        } catch (RemoteException ex) {
            // system process is dead
            // system process is dead
        }
        }
@@ -653,25 +640,6 @@ public class TelephonyRegistryManager {
        }
        }
    }
    }


    /**
     * Notify data connection failed on certain subscription.
     *
     * @param subId for which data connection failed.
     * @param slotIndex for which data conenction faled. Can be derived from subId except when subId
     * is invalid.
     * @param apnType the apnType, "ims" for IMS APN, "emergency" for EMERGENCY APN. Note each data
     * connection can support multiple anyTypes.
     *
     * @hide
     */
    public void notifyDataConnectionFailed(int subId, int slotIndex, String apnType) {
        try {
            sRegistry.notifyDataConnectionFailedForSubscriber(slotIndex, subId, apnType);
        } catch (RemoteException ex) {
            // system process is dead
        }
    }

    /**
    /**
     * TODO change from bundle to CellLocation?
     * TODO change from bundle to CellLocation?
     * @hide
     * @hide
Loading