Merge "Publish ImsMmtelManager API for better debugging"

This commit is contained in:
Shi Lu
2020-01-20 16:56:37 +00:00
committed by Gerrit Code Review
8 changed files with 444 additions and 143 deletions

View File

@@ -46153,6 +46153,37 @@ package android.telephony.gsm {
package android.telephony.ims { package android.telephony.ims {
public final class ImsException extends java.lang.Exception {
method public int getCode();
field public static final int CODE_ERROR_SERVICE_UNAVAILABLE = 1; // 0x1
field public static final int CODE_ERROR_UNSPECIFIED = 0; // 0x0
field public static final int CODE_ERROR_UNSUPPORTED_OPERATION = 2; // 0x2
}
public class ImsMmTelManager implements android.telephony.ims.RegistrationManager {
method @NonNull @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public static android.telephony.ims.ImsMmTelManager createForSubscriptionId(int);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public int getVoWiFiModeSetting();
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isAdvancedCallingSettingEnabled();
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isTtyOverVolteEnabled();
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isVoWiFiRoamingSettingEnabled();
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isVoWiFiSettingEnabled();
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public boolean isVtSettingEnabled();
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void registerMmTelCapabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback) throws android.telephony.ims.ImsException;
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public void unregisterMmTelCapabilityCallback(@NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback);
field public static final int WIFI_MODE_CELLULAR_PREFERRED = 1; // 0x1
field public static final int WIFI_MODE_WIFI_ONLY = 0; // 0x0
field public static final int WIFI_MODE_WIFI_PREFERRED = 2; // 0x2
}
public static class ImsMmTelManager.CapabilityCallback {
ctor public ImsMmTelManager.CapabilityCallback();
method public void onCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
}
public final class ImsReasonInfo implements android.os.Parcelable { public final class ImsReasonInfo implements android.os.Parcelable {
ctor public ImsReasonInfo(int, int, @Nullable String); ctor public ImsReasonInfo(int, int, @Nullable String);
method public int describeContents(); method public int describeContents();
@@ -46336,6 +46367,38 @@ package android.telephony.ims {
field public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2; // 0x2 field public static final int EXTRA_CODE_CALL_RETRY_SILENT_REDIAL = 2; // 0x2
} }
public interface RegistrationManager {
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
field public static final int REGISTRATION_STATE_NOT_REGISTERED = 0; // 0x0
field public static final int REGISTRATION_STATE_REGISTERED = 2; // 0x2
field public static final int REGISTRATION_STATE_REGISTERING = 1; // 0x1
}
public static class RegistrationManager.RegistrationCallback {
ctor public RegistrationManager.RegistrationCallback();
method public void onRegistered(int);
method public void onRegistering(int);
method public void onTechnologyChangeFailed(int, @Nullable android.telephony.ims.ImsReasonInfo);
method public void onUnregistered(@Nullable android.telephony.ims.ImsReasonInfo);
}
}
package android.telephony.ims.feature {
public class MmTelFeature {
}
public static class MmTelFeature.MmTelCapabilities {
field public static final int CAPABILITY_TYPE_SMS = 8; // 0x8
field public static final int CAPABILITY_TYPE_UT = 4; // 0x4
field public static final int CAPABILITY_TYPE_VIDEO = 2; // 0x2
field public static final int CAPABILITY_TYPE_VOICE = 1; // 0x1
}
} }
package android.telephony.mbms { package android.telephony.mbms {

View File

@@ -9885,10 +9885,6 @@ package android.telephony.ims {
ctor public ImsException(@Nullable String); ctor public ImsException(@Nullable String);
ctor public ImsException(@Nullable String, int); ctor public ImsException(@Nullable String, int);
ctor public ImsException(@Nullable String, int, @Nullable Throwable); ctor public ImsException(@Nullable String, int, @Nullable Throwable);
method public int getCode();
field public static final int CODE_ERROR_SERVICE_UNAVAILABLE = 1; // 0x1
field public static final int CODE_ERROR_UNSPECIFIED = 0; // 0x0
field public static final int CODE_ERROR_UNSUPPORTED_OPERATION = 2; // 0x2
} }
public final class ImsExternalCallState implements android.os.Parcelable { public final class ImsExternalCallState implements android.os.Parcelable {
@@ -9914,23 +9910,13 @@ package android.telephony.ims {
} }
public class ImsMmTelManager implements android.telephony.ims.RegistrationManager { public class ImsMmTelManager implements android.telephony.ims.RegistrationManager {
method @NonNull public static android.telephony.ims.ImsMmTelManager createForSubscriptionId(int);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getFeatureState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws android.telephony.ims.ImsException; method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getFeatureState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws android.telephony.ims.ImsException;
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoWiFiModeSetting();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoWiFiRoamingModeSetting(); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoWiFiRoamingModeSetting();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAdvancedCallingSettingEnabled();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAvailable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAvailable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isCapable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isCapable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void isSupported(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>) throws android.telephony.ims.ImsException; method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void isSupported(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>) throws android.telephony.ims.ImsException;
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isTtyOverVolteEnabled();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isVoWiFiRoamingSettingEnabled();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isVoWiFiSettingEnabled();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isVtSettingEnabled();
method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback) throws android.telephony.ims.ImsException; method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback) throws android.telephony.ims.ImsException;
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerMmTelCapabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback) throws android.telephony.ims.ImsException;
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setAdvancedCallingSettingEnabled(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setAdvancedCallingSettingEnabled(boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRttCapabilitySetting(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRttCapabilitySetting(boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiModeSetting(int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiModeSetting(int);
@@ -9940,16 +9926,6 @@ package android.telephony.ims {
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiSettingEnabled(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiSettingEnabled(boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVtSettingEnabled(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVtSettingEnabled(boolean);
method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback); method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterMmTelCapabilityCallback(@NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback);
field public static final int WIFI_MODE_CELLULAR_PREFERRED = 1; // 0x1
field public static final int WIFI_MODE_WIFI_ONLY = 0; // 0x0
field public static final int WIFI_MODE_WIFI_PREFERRED = 2; // 0x2
}
public static class ImsMmTelManager.CapabilityCallback {
ctor public ImsMmTelManager.CapabilityCallback();
method public void onCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
} }
@Deprecated public static class ImsMmTelManager.RegistrationCallback extends android.telephony.ims.RegistrationManager.RegistrationCallback { @Deprecated public static class ImsMmTelManager.RegistrationCallback extends android.telephony.ims.RegistrationManager.RegistrationCallback {
@@ -10289,24 +10265,6 @@ package android.telephony.ims {
method @NonNull public android.telephony.ims.RcsContactUceCapability build(); method @NonNull public android.telephony.ims.RcsContactUceCapability build();
} }
public interface RegistrationManager {
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
field public static final int REGISTRATION_STATE_NOT_REGISTERED = 0; // 0x0
field public static final int REGISTRATION_STATE_REGISTERED = 2; // 0x2
field public static final int REGISTRATION_STATE_REGISTERING = 1; // 0x1
}
public static class RegistrationManager.RegistrationCallback {
ctor public RegistrationManager.RegistrationCallback();
method public void onRegistered(int);
method public void onRegistering(int);
method public void onTechnologyChangeFailed(int, @Nullable android.telephony.ims.ImsReasonInfo);
method public void onUnregistered(@Nullable android.telephony.ims.ImsReasonInfo);
}
} }
package android.telephony.ims.feature { package android.telephony.ims.feature {
@@ -10369,7 +10327,7 @@ package android.telephony.ims.feature {
method public void onFeatureReady(); method public void onFeatureReady();
method public void onFeatureRemoved(); method public void onFeatureRemoved();
method public boolean queryCapabilityConfiguration(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int); method public boolean queryCapabilityConfiguration(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int);
method public final android.telephony.ims.feature.MmTelFeature.MmTelCapabilities queryCapabilityStatus(); method @NonNull public final android.telephony.ims.feature.MmTelFeature.MmTelCapabilities queryCapabilityStatus();
method public void setUiTtyMode(int, @Nullable android.os.Message); method public void setUiTtyMode(int, @Nullable android.os.Message);
method @android.telephony.ims.feature.MmTelFeature.ProcessCallResult public int shouldProcessCall(@NonNull String[]); method @android.telephony.ims.feature.MmTelFeature.ProcessCallResult public int shouldProcessCall(@NonNull String[]);
field public static final String EXTRA_IS_UNKNOWN_CALL = "android.telephony.ims.feature.extra.IS_UNKNOWN_CALL"; field public static final String EXTRA_IS_UNKNOWN_CALL = "android.telephony.ims.feature.extra.IS_UNKNOWN_CALL";
@@ -10385,10 +10343,6 @@ package android.telephony.ims.feature {
method public final void addCapabilities(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int); method public final void addCapabilities(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int);
method public final boolean isCapable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int); method public final boolean isCapable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int);
method public final void removeCapabilities(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int); method public final void removeCapabilities(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int);
field public static final int CAPABILITY_TYPE_SMS = 8; // 0x8
field public static final int CAPABILITY_TYPE_UT = 4; // 0x4
field public static final int CAPABILITY_TYPE_VIDEO = 2; // 0x2
field public static final int CAPABILITY_TYPE_VOICE = 1; // 0x1
} }
@IntDef(flag=true, value={android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_SMS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MmTelFeature.MmTelCapabilities.MmTelCapability { @IntDef(flag=true, value={android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_SMS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MmTelFeature.MmTelCapabilities.MmTelCapability {

View File

@@ -3248,10 +3248,6 @@ package android.telephony.ims {
ctor public ImsException(@Nullable String); ctor public ImsException(@Nullable String);
ctor public ImsException(@Nullable String, int); ctor public ImsException(@Nullable String, int);
ctor public ImsException(@Nullable String, int, @Nullable Throwable); ctor public ImsException(@Nullable String, int, @Nullable Throwable);
method public int getCode();
field public static final int CODE_ERROR_SERVICE_UNAVAILABLE = 1; // 0x1
field public static final int CODE_ERROR_UNSPECIFIED = 0; // 0x0
field public static final int CODE_ERROR_UNSUPPORTED_OPERATION = 2; // 0x2
} }
public final class ImsExternalCallState implements android.os.Parcelable { public final class ImsExternalCallState implements android.os.Parcelable {
@@ -3277,23 +3273,13 @@ package android.telephony.ims {
} }
public class ImsMmTelManager implements android.telephony.ims.RegistrationManager { public class ImsMmTelManager implements android.telephony.ims.RegistrationManager {
method @NonNull public static android.telephony.ims.ImsMmTelManager createForSubscriptionId(int);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getFeatureState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws android.telephony.ims.ImsException; method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getFeatureState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>) throws android.telephony.ims.ImsException;
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getVoWiFiModeSetting();
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getVoWiFiRoamingModeSetting(); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getVoWiFiRoamingModeSetting();
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isAdvancedCallingSettingEnabled();
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isAvailable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isAvailable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isCapable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isCapable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void isSupported(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>) throws android.telephony.ims.ImsException; method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void isSupported(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>) throws android.telephony.ims.ImsException;
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isTtyOverVolteEnabled();
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isVoWiFiRoamingSettingEnabled();
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isVoWiFiSettingEnabled();
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isVtSettingEnabled();
method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback) throws android.telephony.ims.ImsException; method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback) throws android.telephony.ims.ImsException;
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerMmTelCapabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback) throws android.telephony.ims.ImsException;
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setAdvancedCallingSettingEnabled(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setAdvancedCallingSettingEnabled(boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRttCapabilitySetting(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setRttCapabilitySetting(boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiModeSetting(int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiModeSetting(int);
@@ -3303,16 +3289,6 @@ package android.telephony.ims {
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiSettingEnabled(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiSettingEnabled(boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVtSettingEnabled(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVtSettingEnabled(boolean);
method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback); method @Deprecated @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterMmTelCapabilityCallback(@NonNull android.telephony.ims.ImsMmTelManager.CapabilityCallback);
field public static final int WIFI_MODE_CELLULAR_PREFERRED = 1; // 0x1
field public static final int WIFI_MODE_WIFI_ONLY = 0; // 0x0
field public static final int WIFI_MODE_WIFI_PREFERRED = 2; // 0x2
}
public static class ImsMmTelManager.CapabilityCallback {
ctor public ImsMmTelManager.CapabilityCallback();
method public void onCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.MmTelFeature.MmTelCapabilities);
} }
@Deprecated public static class ImsMmTelManager.RegistrationCallback extends android.telephony.ims.RegistrationManager.RegistrationCallback { @Deprecated public static class ImsMmTelManager.RegistrationCallback extends android.telephony.ims.RegistrationManager.RegistrationCallback {
@@ -3600,24 +3576,6 @@ package android.telephony.ims {
method public void onProvisioningStringChanged(int, @NonNull String); method public void onProvisioningStringChanged(int, @NonNull String);
} }
public interface RegistrationManager {
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
field public static final int REGISTRATION_STATE_NOT_REGISTERED = 0; // 0x0
field public static final int REGISTRATION_STATE_REGISTERED = 2; // 0x2
field public static final int REGISTRATION_STATE_REGISTERING = 1; // 0x1
}
public static class RegistrationManager.RegistrationCallback {
ctor public RegistrationManager.RegistrationCallback();
method public void onRegistered(int);
method public void onRegistering(int);
method public void onTechnologyChangeFailed(int, @Nullable android.telephony.ims.ImsReasonInfo);
method public void onUnregistered(@Nullable android.telephony.ims.ImsReasonInfo);
}
} }
package android.telephony.ims.feature { package android.telephony.ims.feature {
@@ -3680,7 +3638,7 @@ package android.telephony.ims.feature {
method public void onFeatureReady(); method public void onFeatureReady();
method public void onFeatureRemoved(); method public void onFeatureRemoved();
method public boolean queryCapabilityConfiguration(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int); method public boolean queryCapabilityConfiguration(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int, int);
method public final android.telephony.ims.feature.MmTelFeature.MmTelCapabilities queryCapabilityStatus(); method @NonNull public final android.telephony.ims.feature.MmTelFeature.MmTelCapabilities queryCapabilityStatus();
method public void setUiTtyMode(int, @Nullable android.os.Message); method public void setUiTtyMode(int, @Nullable android.os.Message);
method @android.telephony.ims.feature.MmTelFeature.ProcessCallResult public int shouldProcessCall(@NonNull String[]); method @android.telephony.ims.feature.MmTelFeature.ProcessCallResult public int shouldProcessCall(@NonNull String[]);
field public static final String EXTRA_IS_UNKNOWN_CALL = "android.telephony.ims.feature.extra.IS_UNKNOWN_CALL"; field public static final String EXTRA_IS_UNKNOWN_CALL = "android.telephony.ims.feature.extra.IS_UNKNOWN_CALL";
@@ -3696,10 +3654,6 @@ package android.telephony.ims.feature {
method public final void addCapabilities(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int); method public final void addCapabilities(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int);
method public final boolean isCapable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int); method public final boolean isCapable(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int);
method public final void removeCapabilities(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int); method public final void removeCapabilities(@android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.MmTelCapability int);
field public static final int CAPABILITY_TYPE_SMS = 8; // 0x8
field public static final int CAPABILITY_TYPE_UT = 4; // 0x4
field public static final int CAPABILITY_TYPE_VIDEO = 2; // 0x2
field public static final int CAPABILITY_TYPE_VOICE = 1; // 0x1
} }
@IntDef(flag=true, value={android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_SMS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MmTelFeature.MmTelCapabilities.MmTelCapability { @IntDef(flag=true, value={android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT, android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_SMS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface MmTelFeature.MmTelCapabilities.MmTelCapability {

View File

@@ -30,10 +30,7 @@ import java.lang.annotation.RetentionPolicy;
/** /**
* This class defines an IMS-related exception that has been thrown while interacting with a * This class defines an IMS-related exception that has been thrown while interacting with a
* device or carrier provided ImsService implementation. * device or carrier provided ImsService implementation.
* @hide
*/ */
@SystemApi
@TestApi
public final class ImsException extends Exception { public final class ImsException extends Exception {
/** /**
@@ -83,7 +80,10 @@ public final class ImsException extends Exception {
/** /**
* A new {@link ImsException} with an unspecified {@link ImsErrorCode} code. * A new {@link ImsException} with an unspecified {@link ImsErrorCode} code.
* @param message an optional message to detail the error condition more specifically. * @param message an optional message to detail the error condition more specifically.
* @hide
*/ */
@SystemApi
@TestApi
public ImsException(@Nullable String message) { public ImsException(@Nullable String message) {
super(getMessage(message, CODE_ERROR_UNSPECIFIED)); super(getMessage(message, CODE_ERROR_UNSPECIFIED));
} }
@@ -91,7 +91,10 @@ public final class ImsException extends Exception {
/** /**
* A new {@link ImsException} that includes an {@link ImsErrorCode} error code. * A new {@link ImsException} that includes an {@link ImsErrorCode} error code.
* @param message an optional message to detail the error condition more specifically. * @param message an optional message to detail the error condition more specifically.
* @hide
*/ */
@SystemApi
@TestApi
public ImsException(@Nullable String message, @ImsErrorCode int code) { public ImsException(@Nullable String message, @ImsErrorCode int code) {
super(getMessage(message, code)); super(getMessage(message, code));
mCode = code; mCode = code;
@@ -102,7 +105,10 @@ public final class ImsException extends Exception {
* {@link Throwable} that contains the original error that was thrown to lead to this Exception. * {@link Throwable} that contains the original error that was thrown to lead to this Exception.
* @param message an optional message to detail the error condition more specifically. * @param message an optional message to detail the error condition more specifically.
* @param cause the {@link Throwable} that caused this {@link ImsException} to be created. * @param cause the {@link Throwable} that caused this {@link ImsException} to be created.
* @hide
*/ */
@SystemApi
@TestApi
public ImsException(@Nullable String message, @ImsErrorCode int code, public ImsException(@Nullable String message, @ImsErrorCode int code,
@Nullable Throwable cause) { @Nullable Throwable cause) {
super(getMessage(message, code), cause); super(getMessage(message, code), cause);

View File

@@ -23,6 +23,8 @@ import android.annotation.IntDef;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
import android.annotation.RequiresPermission; import android.annotation.RequiresPermission;
import android.annotation.SuppressAutoDoc;
import android.annotation.SuppressLint;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.annotation.TestApi; import android.annotation.TestApi;
import android.content.Context; import android.content.Context;
@@ -56,10 +58,7 @@ import java.util.function.Consumer;
* associated subscription. * associated subscription.
* *
* @see #createForSubscriptionId(int) * @see #createForSubscriptionId(int)
* @hide
*/ */
@SystemApi
@TestApi
public class ImsMmTelManager implements RegistrationManager { public class ImsMmTelManager implements RegistrationManager {
/** /**
@@ -94,9 +93,11 @@ public class ImsMmTelManager implements RegistrationManager {
* @see #registerImsRegistrationCallback(Executor, RegistrationCallback) (RegistrationCallback) * @see #registerImsRegistrationCallback(Executor, RegistrationCallback) (RegistrationCallback)
* @see #unregisterImsRegistrationCallback(RegistrationCallback) * @see #unregisterImsRegistrationCallback(RegistrationCallback)
* @deprecated Use {@link RegistrationManager.RegistrationCallback} instead. * @deprecated Use {@link RegistrationManager.RegistrationCallback} instead.
* @hide
*/ */
// Do not add to this class, add to RegistrationManager.RegistrationCallback instead. // Do not add to this class, add to RegistrationManager.RegistrationCallback instead.
@Deprecated @Deprecated
@SystemApi @TestApi
public static class RegistrationCallback extends RegistrationManager.RegistrationCallback { public static class RegistrationCallback extends RegistrationManager.RegistrationCallback {
/** /**
@@ -141,7 +142,7 @@ public class ImsMmTelManager implements RegistrationManager {
/** /**
* Receives IMS capability status updates from the ImsService. This information is also * Receives IMS capability status updates from the ImsService. This information is also
* available via the {@link #isAvailable(int, int)} method below. * available via the {@see #isAvailable(int, int)} method below.
* *
* @see #registerMmTelCapabilityCallback(Executor, CapabilityCallback) (CapabilityCallback) * @see #registerMmTelCapabilityCallback(Executor, CapabilityCallback) (CapabilityCallback)
* @see #unregisterMmTelCapabilityCallback(CapabilityCallback) * @see #unregisterMmTelCapabilityCallback(CapabilityCallback)
@@ -190,7 +191,7 @@ public class ImsMmTelManager implements RegistrationManager {
* If unavailable, the feature is not able to support the unavailable capability at this * If unavailable, the feature is not able to support the unavailable capability at this
* time. * time.
* *
* This information can also be queried using the {@link #isAvailable(int, int)} API. * This information can also be queried using the {@see #isAvailable(int, int)} API.
* *
* @param capabilities The new availability of the capabilities. * @param capabilities The new availability of the capabilities.
*/ */
@@ -218,8 +219,20 @@ public class ImsMmTelManager implements RegistrationManager {
* *
* @param subId The ID of the subscription that this ImsMmTelManager will use. * @param subId The ID of the subscription that this ImsMmTelManager will use.
* @see android.telephony.SubscriptionManager#getActiveSubscriptionInfoList() * @see android.telephony.SubscriptionManager#getActiveSubscriptionInfoList()
*
* <p>Requires Permission: {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE
* READ_PRECISE_PHONE_STATE} or that the calling app has carrier privileges
* (see {@link android.telephony.TelephonyManager#hasCarrierPrivileges}).
*
* @throws IllegalArgumentException if the subscription is invalid. * @throws IllegalArgumentException if the subscription is invalid.
*
*/ */
@SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
@RequiresPermission(anyOf = {
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
android.Manifest.permission.READ_PRECISE_PHONE_STATE
})
@SuppressLint("ManagerLookup")
public static @NonNull ImsMmTelManager createForSubscriptionId(int subId) { public static @NonNull ImsMmTelManager createForSubscriptionId(int subId) {
if (!SubscriptionManager.isValidSubscriptionId(subId)) { if (!SubscriptionManager.isValidSubscriptionId(subId)) {
throw new IllegalArgumentException("Invalid subscription ID"); throw new IllegalArgumentException("Invalid subscription ID");
@@ -258,8 +271,10 @@ public class ImsMmTelManager implements RegistrationManager {
* reason. * reason.
* @deprecated Use {@link RegistrationManager#registerImsRegistrationCallback(Executor, * @deprecated Use {@link RegistrationManager#registerImsRegistrationCallback(Executor,
* RegistrationManager.RegistrationCallback)} instead. * RegistrationManager.RegistrationCallback)} instead.
* @hide
*/ */
@Deprecated @Deprecated
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public void registerImsRegistrationCallback(@NonNull @CallbackExecutor Executor executor, public void registerImsRegistrationCallback(@NonNull @CallbackExecutor Executor executor,
@NonNull RegistrationCallback c) throws ImsException { @NonNull RegistrationCallback c) throws ImsException {
@@ -284,9 +299,20 @@ public class ImsMmTelManager implements RegistrationManager {
} }
} }
/**{@inheritDoc}*/ /**
*
* <p>Requires Permission: {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE
* READ_PRECISE_PHONE_STATE} or that the calling app has carrier privileges
* (see {@link android.telephony.TelephonyManager#hasCarrierPrivileges}).
*
* {@inheritDoc}
*
*/
@Override @Override
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
@RequiresPermission(anyOf = {
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
android.Manifest.permission.READ_PRECISE_PHONE_STATE})
public void registerImsRegistrationCallback(@NonNull @CallbackExecutor Executor executor, public void registerImsRegistrationCallback(@NonNull @CallbackExecutor Executor executor,
@NonNull RegistrationManager.RegistrationCallback c) throws ImsException { @NonNull RegistrationManager.RegistrationCallback c) throws ImsException {
if (c == null) { if (c == null) {
@@ -317,8 +343,10 @@ public class ImsMmTelManager implements RegistrationManager {
* @see #registerImsRegistrationCallback(Executor, RegistrationCallback) * @see #registerImsRegistrationCallback(Executor, RegistrationCallback)
* @deprecated Use {@link #unregisterImsRegistrationCallback( * @deprecated Use {@link #unregisterImsRegistrationCallback(
* RegistrationManager.RegistrationCallback)}. * RegistrationManager.RegistrationCallback)}.
* @hide
*/ */
@Deprecated @Deprecated
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public void unregisterImsRegistrationCallback(@NonNull RegistrationCallback c) { public void unregisterImsRegistrationCallback(@NonNull RegistrationCallback c) {
if (c == null) { if (c == null) {
@@ -331,9 +359,20 @@ public class ImsMmTelManager implements RegistrationManager {
} }
} }
/**{@inheritDoc}*/ /**
*
* <p>Requires Permission: {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE
* READ_PRECISE_PHONE_STATE} or that the calling app has carrier privileges
* (see {@link android.telephony.TelephonyManager#hasCarrierPrivileges}).
* Access by profile owners is deprecated and will be removed in a future release.
*
*{@inheritDoc}
*/
@Override @Override
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
@RequiresPermission(anyOf = {
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
android.Manifest.permission.READ_PRECISE_PHONE_STATE})
public void unregisterImsRegistrationCallback( public void unregisterImsRegistrationCallback(
@NonNull RegistrationManager.RegistrationCallback c) { @NonNull RegistrationManager.RegistrationCallback c) {
if (c == null) { if (c == null) {
@@ -346,9 +385,13 @@ public class ImsMmTelManager implements RegistrationManager {
} }
} }
/**{@inheritDoc}*/ /**
* {@inheritDoc}
* @hide
*/
@Override @Override
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @SystemApi @TestApi
@RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public void getRegistrationState(@NonNull @CallbackExecutor Executor executor, public void getRegistrationState(@NonNull @CallbackExecutor Executor executor,
@NonNull @ImsRegistrationState Consumer<Integer> stateCallback) { @NonNull @ImsRegistrationState Consumer<Integer> stateCallback) {
if (stateCallback == null) { if (stateCallback == null) {
@@ -369,9 +412,19 @@ public class ImsMmTelManager implements RegistrationManager {
} }
} }
/**{@inheritDoc}*/ /**
* <p>Requires Permission: {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE
* READ_PRECISE_PHONE_STATE} or that the calling app has carrier privileges
* (see {@link android.telephony.TelephonyManager#hasCarrierPrivileges}).
* Access by profile owners is deprecated and will be removed in a future release.
*
*{@inheritDoc}
*/
@Override @Override
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
@RequiresPermission(anyOf = {
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
android.Manifest.permission.READ_PRECISE_PHONE_STATE})
public void getRegistrationTransportType(@NonNull @CallbackExecutor Executor executor, public void getRegistrationTransportType(@NonNull @CallbackExecutor Executor executor,
@NonNull @AccessNetworkConstants.TransportType @NonNull @AccessNetworkConstants.TransportType
Consumer<Integer> transportTypeCallback) { Consumer<Integer> transportTypeCallback) {
@@ -397,12 +450,25 @@ public class ImsMmTelManager implements RegistrationManager {
/** /**
* Registers a {@link CapabilityCallback} with the system, which will provide MmTel service * Registers a {@link CapabilityCallback} with the system, which will provide MmTel service
* availability updates for the subscription specified in * availability updates for the subscription specified in
* {@link #createForSubscriptionId(int)}. The method {@link #isAvailable(int, int)} * {@link #createForSubscriptionId(int)}. The method {@see #isAvailable(int, int)}
* can also be used to query this information at any time. * can also be used to query this information at any time.
* *
* Use {@link SubscriptionManager.OnSubscriptionsChangedListener} to listen to * Use {@link SubscriptionManager.OnSubscriptionsChangedListener} to listen to
* subscription changed events and call * subscription changed events and call
* {@link #unregisterMmTelCapabilityCallback(CapabilityCallback)} to clean up. * {@link #unregisterMmTelCapabilityCallback(CapabilityCallback)} to clean up.
* <p>This API requires one of the following:
* <ul>
* <li>The caller holds the READ_PRECISE_PHONE_STATE permission.</li>
* <li>If the caller is the device or profile owner, the caller holds the
* {@link Manifest.permission#READ_PRECISE_PHONE_STATE} permission.</li>
* <li>The caller has carrier privileges (see
* {@link android.telephony.TelephonyManager#hasCarrierPrivileges}) on any
* active subscription.</li>
* <li>The caller is the default SMS app for the device.</li>
* </ul>
* <p>The profile owner is an app that owns a managed profile on the device; for more details
* see <a href="https://developer.android.com/work/managed-profiles">Work profiles</a>.
* Access by profile owners is deprecated and will be removed in a future release.
* *
* When the callback is registered, it will initiate the callback c to be called with the * When the callback is registered, it will initiate the callback c to be called with the
* current capabilities. * current capabilities.
@@ -418,7 +484,10 @@ public class ImsMmTelManager implements RegistrationManager {
* the service crashed, for example. See {@link ImsException#getCode()} for a more detailed * the service crashed, for example. See {@link ImsException#getCode()} for a more detailed
* reason. * reason.
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
@RequiresPermission(anyOf = {
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
android.Manifest.permission.READ_PRECISE_PHONE_STATE})
public void registerMmTelCapabilityCallback(@NonNull @CallbackExecutor Executor executor, public void registerMmTelCapabilityCallback(@NonNull @CallbackExecutor Executor executor,
@NonNull CapabilityCallback c) throws ImsException { @NonNull CapabilityCallback c) throws ImsException {
if (c == null) { if (c == null) {
@@ -450,10 +519,27 @@ public class ImsMmTelManager implements RegistrationManager {
* When the subscription associated with this callback is removed (SIM removed, ESIM swap, * When the subscription associated with this callback is removed (SIM removed, ESIM swap,
* etc...), this callback will automatically be removed. If this method is called for an * etc...), this callback will automatically be removed. If this method is called for an
* inactive subscription, it will result in a no-op. * inactive subscription, it will result in a no-op.
* <p>This API requires one of the following:
* <ul>
* <li>The caller holds the READ_PRECISE_PHONE_STATE permission.</li>
* <li>If the caller is the device or profile owner, the caller holds the
* {@link Manifest.permission#READ_PRECISE_PHONE_STATE} permission.</li>
* <li>The caller has carrier privileges (see
* {@link android.telephony.TelephonyManager#hasCarrierPrivileges}) on any
* active subscription.</li>
* <li>The caller is the default SMS app for the device.</li>
* </ul>
* <p>The profile owner is an app that owns a managed profile on the device; for more details
* see <a href="https://developer.android.com/work/managed-profiles">Work profiles</a>.
* Access by profile owners is deprecated and will be removed in a future release.
*
* @param c The MmTel {@link CapabilityCallback} to be removed. * @param c The MmTel {@link CapabilityCallback} to be removed.
* @see #registerMmTelCapabilityCallback(Executor, CapabilityCallback) * @see #registerMmTelCapabilityCallback(Executor, CapabilityCallback)
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
@RequiresPermission(anyOf = {
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
android.Manifest.permission.READ_PRECISE_PHONE_STATE})
public void unregisterMmTelCapabilityCallback(@NonNull CapabilityCallback c) { public void unregisterMmTelCapabilityCallback(@NonNull CapabilityCallback c) {
if (c == null) { if (c == null) {
throw new IllegalArgumentException("Must include a non-null RegistrationCallback."); throw new IllegalArgumentException("Must include a non-null RegistrationCallback.");
@@ -475,6 +561,19 @@ public class ImsMmTelManager implements RegistrationManager {
* <p> * <p>
* Note: If the carrier configuration for advanced calling is not editable or hidden, this * Note: If the carrier configuration for advanced calling is not editable or hidden, this
* method will always return the default value. * method will always return the default value.
* <p>This API requires one of the following:
* <ul>
* <li>The caller holds the READ_PRECISE_PHONE_STATE permission.</li>
* <li>If the caller is the device or profile owner, the caller holds the
* {@link Manifest.permission#READ_PRECISE_PHONE_STATE} permission.</li>
* <li>The caller has carrier privileges (see
* {@link android.telephony.TelephonyManager#hasCarrierPrivileges}) on any
* active subscription.</li>
* <li>The caller is the default SMS app for the device.</li>
* </ul>
* <p>The profile owner is an app that owns a managed profile on the device; for more details
* see <a href="https://developer.android.com/work/managed-profiles">Work profiles</a>.
* Access by profile owners is deprecated and will be removed in a future release.
* *
* @see android.telephony.CarrierConfigManager#KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL * @see android.telephony.CarrierConfigManager#KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL
* @see android.telephony.CarrierConfigManager#KEY_EDITABLE_ENHANCED_4G_LTE_BOOL * @see android.telephony.CarrierConfigManager#KEY_EDITABLE_ENHANCED_4G_LTE_BOOL
@@ -486,7 +585,10 @@ public class ImsMmTelManager implements RegistrationManager {
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @return true if the user's setting for advanced calling is enabled, false otherwise. * @return true if the user's setting for advanced calling is enabled, false otherwise.
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
@RequiresPermission(anyOf = {
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
android.Manifest.permission.READ_PRECISE_PHONE_STATE})
public boolean isAdvancedCallingSettingEnabled() { public boolean isAdvancedCallingSettingEnabled() {
try { try {
return getITelephony().isAdvancedCallingSettingEnabled(mSubId); return getITelephony().isAdvancedCallingSettingEnabled(mSubId);
@@ -524,8 +626,10 @@ public class ImsMmTelManager implements RegistrationManager {
* @see #isAdvancedCallingSettingEnabled() * @see #isAdvancedCallingSettingEnabled()
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @hide
*/ */
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
@SystemApi @TestApi
public void setAdvancedCallingSettingEnabled(boolean isEnabled) { public void setAdvancedCallingSettingEnabled(boolean isEnabled) {
try { try {
getITelephony().setAdvancedCallingSettingEnabled(mSubId, isEnabled); getITelephony().setAdvancedCallingSettingEnabled(mSubId, isEnabled);
@@ -556,13 +660,15 @@ public class ImsMmTelManager implements RegistrationManager {
* {@link ImsRegistrationImplBase#REGISTRATION_TECH_IWLAN} * {@link ImsRegistrationImplBase#REGISTRATION_TECH_IWLAN}
* @param capability The IMS MmTel capability to query, can be one of the following: * @param capability The IMS MmTel capability to query, can be one of the following:
* {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VOICE}, * {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VOICE},
* {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VIDEO, * {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VIDEO},
* {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_UT}, * {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_UT},
* {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_SMS} * {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_SMS}
* @return {@code true} if the MmTel IMS capability is capable for this subscription, false * @return {@code true} if the MmTel IMS capability is capable for this subscription, false
* otherwise. * otherwise.
* @hide
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
@SystemApi @TestApi
public boolean isCapable(@MmTelFeature.MmTelCapabilities.MmTelCapability int capability, public boolean isCapable(@MmTelFeature.MmTelCapabilities.MmTelCapability int capability,
@ImsRegistrationImplBase.ImsRegistrationTech int imsRegTech) { @ImsRegistrationImplBase.ImsRegistrationTech int imsRegTech) {
try { try {
@@ -583,12 +689,14 @@ public class ImsMmTelManager implements RegistrationManager {
* {@link ImsRegistrationImplBase#REGISTRATION_TECH_IWLAN} * {@link ImsRegistrationImplBase#REGISTRATION_TECH_IWLAN}
* @param capability The IMS MmTel capability to query, can be one of the following: * @param capability The IMS MmTel capability to query, can be one of the following:
* {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VOICE}, * {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VOICE},
* {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VIDEO, * {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VIDEO},
* {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_UT}, * {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_UT},
* {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_SMS} * {@link MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_SMS}
* @return {@code true} if the MmTel IMS capability is available for this subscription, false * @return {@code true} if the MmTel IMS capability is available for this subscription, false
* otherwise. * otherwise.
* @hide
*/ */
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public boolean isAvailable(@MmTelFeature.MmTelCapabilities.MmTelCapability int capability, public boolean isAvailable(@MmTelFeature.MmTelCapabilities.MmTelCapability int capability,
@ImsRegistrationImplBase.ImsRegistrationTech int imsRegTech) { @ImsRegistrationImplBase.ImsRegistrationTech int imsRegTech) {
@@ -613,7 +721,9 @@ public class ImsMmTelManager implements RegistrationManager {
* capability is supported on this carrier network for the transport specified. * capability is supported on this carrier network for the transport specified.
* @throws ImsException if the subscription is no longer valid or the IMS service is not * @throws ImsException if the subscription is no longer valid or the IMS service is not
* available. * available.
* @hide
*/ */
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public void isSupported(@MmTelFeature.MmTelCapabilities.MmTelCapability int capability, public void isSupported(@MmTelFeature.MmTelCapabilities.MmTelCapability int capability,
@AccessNetworkConstants.TransportType int transportType, @AccessNetworkConstants.TransportType int transportType,
@@ -642,12 +752,32 @@ public class ImsMmTelManager implements RegistrationManager {
/** /**
* The user's setting for whether or not they have enabled the "Video Calling" setting. * The user's setting for whether or not they have enabled the "Video Calling" setting.
* *
* <p>
* Note: If the carrier configuration for advanced calling is not editable or hidden, this
* method will always return the default value.
* <p>This API requires one of the following:
* <ul>
* <li>The caller holds the READ_PRECISE_PHONE_STATE permission.</li>
* <li>If the caller is the device or profile owner, the caller holds the
* {@link Manifest.permission#READ_PRECISE_PHONE_STATE} permission.</li>
* <li>The caller has carrier privileges (see
* {@link android.telephony.TelephonyManager#hasCarrierPrivileges}) on any
* active subscription.</li>
* <li>The caller is the default SMS app for the device.</li>
* </ul>
* <p>The profile owner is an app that owns a managed profile on the device; for more details
* see <a href="https://developer.android.com/work/managed-profiles">Work profiles</a>.
* Access by profile owners is deprecated and will be removed in a future release.
*
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @return true if the user’s “Video Calling” setting is currently enabled. * @return true if the user’s “Video Calling” setting is currently enabled.
* @see #setVtSettingEnabled(boolean) * @see #setVtSettingEnabled(boolean)
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(anyOf = {
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
android.Manifest.permission.READ_PRECISE_PHONE_STATE})
@SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
public boolean isVtSettingEnabled() { public boolean isVtSettingEnabled() {
try { try {
return getITelephony().isVtSettingEnabled(mSubId); return getITelephony().isVtSettingEnabled(mSubId);
@@ -669,7 +799,9 @@ public class ImsMmTelManager implements RegistrationManager {
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @see #isVtSettingEnabled() * @see #isVtSettingEnabled()
* @hide
*/ */
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
public void setVtSettingEnabled(boolean isEnabled) { public void setVtSettingEnabled(boolean isEnabled) {
try { try {
@@ -689,11 +821,28 @@ public class ImsMmTelManager implements RegistrationManager {
/** /**
* @return true if the user's setting for Voice over WiFi is enabled and false if it is not. * @return true if the user's setting for Voice over WiFi is enabled and false if it is not.
* *
* <p>This API requires one of the following:
* <ul>
* <li>The caller holds the READ_PRECISE_PHONE_STATE permission.</li>
* <li>If the caller is the device or profile owner, the caller holds the
* {@link Manifest.permission#READ_PRECISE_PHONE_STATE} permission.</li>
* <li>The caller has carrier privileges (see
* {@link android.telephony.TelephonyManager#hasCarrierPrivileges}) on any
* active subscription.</li>
* <li>The caller is the default SMS app for the device.</li>
* </ul>
* <p>The profile owner is an app that owns a managed profile on the device; for more details
* see <a href="https://developer.android.com/work/managed-profiles">Work profiles</a>.
* Access by profile owners is deprecated and will be removed in a future release.
*
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @see #setVoWiFiSettingEnabled(boolean) * @see #setVoWiFiSettingEnabled(boolean)
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
@RequiresPermission(anyOf = {
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
android.Manifest.permission.READ_PRECISE_PHONE_STATE})
public boolean isVoWiFiSettingEnabled() { public boolean isVoWiFiSettingEnabled() {
try { try {
return getITelephony().isVoWiFiSettingEnabled(mSubId); return getITelephony().isVoWiFiSettingEnabled(mSubId);
@@ -716,7 +865,9 @@ public class ImsMmTelManager implements RegistrationManager {
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @param isEnabled true if the user's setting for Voice over WiFi is enabled, false otherwise= * @param isEnabled true if the user's setting for Voice over WiFi is enabled, false otherwise=
* @see #isVoWiFiSettingEnabled() * @see #isVoWiFiSettingEnabled()
* @hide
*/ */
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
public void setVoWiFiSettingEnabled(boolean isEnabled) { public void setVoWiFiSettingEnabled(boolean isEnabled) {
try { try {
@@ -736,13 +887,30 @@ public class ImsMmTelManager implements RegistrationManager {
/** /**
* Returns the user's voice over WiFi roaming setting associated with the current subscription. * Returns the user's voice over WiFi roaming setting associated with the current subscription.
* *
* <p>This API requires one of the following:
* <ul>
* <li>The caller holds the READ_PRECISE_PHONE_STATE permission.</li>
* <li>If the caller is the device or profile owner, the caller holds the
* {@link Manifest.permission#READ_PRECISE_PHONE_STATE} permission.</li>
* <li>The caller has carrier privileges (see
* {@link android.telephony.TelephonyManager#hasCarrierPrivileges}) on any
* active subscription.</li>
* <li>The caller is the default SMS app for the device.</li>
* </ul>
* <p>The profile owner is an app that owns a managed profile on the device; for more details
* see <a href="https://developer.android.com/work/managed-profiles">Work profiles</a>.
* Access by profile owners is deprecated and will be removed in a future release.
*
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @return true if the user's setting for Voice over WiFi while roaming is enabled, false * @return true if the user's setting for Voice over WiFi while roaming is enabled, false
* if disabled. * if disabled.
* @see #setVoWiFiRoamingSettingEnabled(boolean) * @see #setVoWiFiRoamingSettingEnabled(boolean)
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
@RequiresPermission(anyOf = {
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
android.Manifest.permission.READ_PRECISE_PHONE_STATE})
public boolean isVoWiFiRoamingSettingEnabled() { public boolean isVoWiFiRoamingSettingEnabled() {
try { try {
return getITelephony().isVoWiFiRoamingSettingEnabled(mSubId); return getITelephony().isVoWiFiRoamingSettingEnabled(mSubId);
@@ -766,7 +934,9 @@ public class ImsMmTelManager implements RegistrationManager {
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @see #isVoWiFiRoamingSettingEnabled() * @see #isVoWiFiRoamingSettingEnabled()
* @hide
*/ */
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
public void setVoWiFiRoamingSettingEnabled(boolean isEnabled) { public void setVoWiFiRoamingSettingEnabled(boolean isEnabled) {
try { try {
@@ -796,7 +966,9 @@ public class ImsMmTelManager implements RegistrationManager {
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @see #setVoWiFiSettingEnabled(boolean) * @see #setVoWiFiSettingEnabled(boolean)
* @hide
*/ */
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
public void setVoWiFiNonPersistent(boolean isCapable, int mode) { public void setVoWiFiNonPersistent(boolean isCapable, int mode) {
try { try {
@@ -816,6 +988,20 @@ public class ImsMmTelManager implements RegistrationManager {
/** /**
* Returns the user's voice over WiFi Roaming mode setting associated with the device. * Returns the user's voice over WiFi Roaming mode setting associated with the device.
* *
* <p>This API requires one of the following:
* <ul>
* <li>The caller holds the READ_PRECISE_PHONE_STATE permission.</li>
* <li>If the caller is the device or profile owner, the caller holds the
* {@link Manifest.permission#READ_PRECISE_PHONE_STATE} permission.</li>
* <li>The caller has carrier privileges (see
* {@link android.telephony.TelephonyManager#hasCarrierPrivileges}) on any
* active subscription.</li>
* <li>The caller is the default SMS app for the device.</li>
* </ul>
* <p>The profile owner is an app that owns a managed profile on the device; for more details
* see <a href="https://developer.android.com/work/managed-profiles">Work profiles</a>.
* Access by profile owners is deprecated and will be removed in a future release.
*
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @return The Voice over WiFi Mode preference set by the user, which can be one of the * @return The Voice over WiFi Mode preference set by the user, which can be one of the
@@ -825,7 +1011,10 @@ public class ImsMmTelManager implements RegistrationManager {
* - {@link #WIFI_MODE_WIFI_PREFERRED} * - {@link #WIFI_MODE_WIFI_PREFERRED}
* @see #setVoWiFiSettingEnabled(boolean) * @see #setVoWiFiSettingEnabled(boolean)
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
@RequiresPermission(anyOf = {
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
android.Manifest.permission.READ_PRECISE_PHONE_STATE})
public @WiFiCallingMode int getVoWiFiModeSetting() { public @WiFiCallingMode int getVoWiFiModeSetting() {
try { try {
return getITelephony().getVoWiFiModeSetting(mSubId); return getITelephony().getVoWiFiModeSetting(mSubId);
@@ -851,7 +1040,9 @@ public class ImsMmTelManager implements RegistrationManager {
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @see #getVoWiFiModeSetting() * @see #getVoWiFiModeSetting()
* @hide
*/ */
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
public void setVoWiFiModeSetting(@WiFiCallingMode int mode) { public void setVoWiFiModeSetting(@WiFiCallingMode int mode) {
try { try {
@@ -880,7 +1071,9 @@ public class ImsMmTelManager implements RegistrationManager {
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @see #setVoWiFiRoamingSettingEnabled(boolean) * @see #setVoWiFiRoamingSettingEnabled(boolean)
* @hide
*/ */
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public @WiFiCallingMode int getVoWiFiRoamingModeSetting() { public @WiFiCallingMode int getVoWiFiRoamingModeSetting() {
try { try {
@@ -909,7 +1102,9 @@ public class ImsMmTelManager implements RegistrationManager {
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @see #getVoWiFiRoamingModeSetting() * @see #getVoWiFiRoamingModeSetting()
* @hide
*/ */
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
public void setVoWiFiRoamingModeSetting(@WiFiCallingMode int mode) { public void setVoWiFiRoamingModeSetting(@WiFiCallingMode int mode) {
try { try {
@@ -936,7 +1131,9 @@ public class ImsMmTelManager implements RegistrationManager {
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @param isEnabled if true RTT should be enabled during calls made on this subscription. * @param isEnabled if true RTT should be enabled during calls made on this subscription.
* @hide
*/ */
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
public void setRttCapabilitySetting(boolean isEnabled) { public void setRttCapabilitySetting(boolean isEnabled) {
try { try {
@@ -956,12 +1153,29 @@ public class ImsMmTelManager implements RegistrationManager {
/** /**
* @return true if TTY over VoLTE is supported * @return true if TTY over VoLTE is supported
* *
* <p>This API requires one of the following:
* <ul>
* <li>The caller holds the READ_PRECISE_PHONE_STATE permission.</li>
* <li>If the caller is the device or profile owner, the caller holds the
* {@link Manifest.permission#READ_PRECISE_PHONE_STATE} permission.</li>
* <li>The caller has carrier privileges (see
* {@link android.telephony.TelephonyManager#hasCarrierPrivileges}) on any
* active subscription.</li>
* <li>The caller is the default SMS app for the device.</li>
* </ul>
* <p>The profile owner is an app that owns a managed profile on the device; for more details
* see <a href="https://developer.android.com/work/managed-profiles">Work profiles</a>.
* Access by profile owners is deprecated and will be removed in a future release.
*
* @throws IllegalArgumentException if the subscription associated with this operation is not * @throws IllegalArgumentException if the subscription associated with this operation is not
* active (SIM is not inserted, ESIM inactive) or invalid. * active (SIM is not inserted, ESIM inactive) or invalid.
* @see android.telecom.TelecomManager#getCurrentTtyMode * @see android.telecom.TelecomManager#getCurrentTtyMode
* @see android.telephony.CarrierConfigManager#KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL * @see android.telephony.CarrierConfigManager#KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @SuppressAutoDoc // No support for device / profile owner or carrier privileges (b/72967236).
@RequiresPermission(anyOf = {
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
android.Manifest.permission.READ_PRECISE_PHONE_STATE})
public boolean isTtyOverVolteEnabled() { public boolean isTtyOverVolteEnabled() {
try { try {
return getITelephony().isTtyOverVolteEnabled(mSubId); return getITelephony().isTtyOverVolteEnabled(mSubId);
@@ -988,7 +1202,9 @@ public class ImsMmTelManager implements RegistrationManager {
* specified when the service state has been retrieved from the IMS service. * specified when the service state has been retrieved from the IMS service.
* @throws ImsException if the IMS service associated with this subscription is not available or * @throws ImsException if the IMS service associated with this subscription is not available or
* the IMS service is not available. * the IMS service is not available.
* @hide
*/ */
@SystemApi @TestApi
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public void getFeatureState(@NonNull @CallbackExecutor Executor executor, public void getFeatureState(@NonNull @CallbackExecutor Executor executor,
@NonNull @ImsFeature.ImsState Consumer<Integer> callback) throws ImsException { @NonNull @ImsFeature.ImsState Consumer<Integer> callback) throws ImsException {

View File

@@ -22,8 +22,6 @@ import android.annotation.IntDef;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
import android.annotation.RequiresPermission; import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.net.Uri; import android.net.Uri;
import android.os.Binder; import android.os.Binder;
import android.telephony.AccessNetworkConstants; import android.telephony.AccessNetworkConstants;
@@ -41,10 +39,7 @@ import java.util.function.Consumer;
/** /**
* Manages IMS Service registration state for associated {@link ImsFeature}s. * Manages IMS Service registration state for associated {@link ImsFeature}s.
* @hide
*/ */
@SystemApi
@TestApi
public interface RegistrationManager { public interface RegistrationManager {
/** /**
@@ -139,7 +134,6 @@ public interface RegistrationManager {
getAccessType(imsRadioTech), info))); getAccessType(imsRadioTech), info)));
} }
@Override
public void onSubscriberAssociatedUriChanged(Uri[] uris) { public void onSubscriberAssociatedUriChanged(Uri[] uris) {
if (mLocalCallback == null) return; if (mLocalCallback == null) return;
@@ -225,7 +219,11 @@ public interface RegistrationManager {
/** /**
* Registers a {@link RegistrationCallback} with the system. Use * Registers a {@link RegistrationCallback} with the system. Use
* {@link SubscriptionManager.OnSubscriptionsChangedListener} to listen to Subscription changed * @param executor The {@link Executor} that will be used to call the IMS registration state
* callback.
* @param c A callback called on the supplied {@link Executor} that will contain the
* registration state of the IMS service, which will be one of the
* {@see SubscriptionManager.OnSubscriptionsChangedListener} to listen to Subscription changed
* events and call {@link #unregisterImsRegistrationCallback(RegistrationCallback)} to clean up. * events and call {@link #unregisterImsRegistrationCallback(RegistrationCallback)} to clean up.
* *
* When the callback is registered, it will initiate the callback c to be called with the * When the callback is registered, it will initiate the callback c to be called with the
@@ -275,10 +273,10 @@ public interface RegistrationManager {
* Gets the Transport Type associated with the current IMS registration. * Gets the Transport Type associated with the current IMS registration.
* @param executor The {@link Executor} that will be used to call the transportTypeCallback. * @param executor The {@link Executor} that will be used to call the transportTypeCallback.
* @param transportTypeCallback The transport type associated with the current IMS registration, * @param transportTypeCallback The transport type associated with the current IMS registration,
* which will be one of following: * which will be one of following:
* {@link AccessNetworkConstants#TRANSPORT_TYPE_WWAN}, * {@see AccessNetworkConstants#TRANSPORT_TYPE_WWAN},
* {@link AccessNetworkConstants#TRANSPORT_TYPE_WLAN}, or * {@see AccessNetworkConstants#TRANSPORT_TYPE_WLAN}, or
* {@link AccessNetworkConstants#TRANSPORT_TYPE_INVALID}. * {@see AccessNetworkConstants#TRANSPORT_TYPE_INVALID}.
*/ */
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
void getRegistrationTransportType( void getRegistrationTransportType(

View File

@@ -60,15 +60,21 @@ public abstract class ImsFeature {
* This feature supports emergency calling over MMTEL. If defined, the framework will try to * This feature supports emergency calling over MMTEL. If defined, the framework will try to
* place an emergency call over IMS first. If it is not defined, the framework will only use * place an emergency call over IMS first. If it is not defined, the framework will only use
* CSFB for emergency calling. * CSFB for emergency calling.
* @hide
*/ */
@SystemApi @TestApi
public static final int FEATURE_EMERGENCY_MMTEL = 0; public static final int FEATURE_EMERGENCY_MMTEL = 0;
/** /**
* This feature supports the MMTEL feature. * This feature supports the MMTEL feature.
* @hide
*/ */
@SystemApi @TestApi
public static final int FEATURE_MMTEL = 1; public static final int FEATURE_MMTEL = 1;
/** /**
* This feature supports the RCS feature. * This feature supports the RCS feature.
* @hide
*/ */
@SystemApi @TestApi
public static final int FEATURE_RCS = 2; public static final int FEATURE_RCS = 2;
/** /**
* Total number of features defined * Total number of features defined
@@ -116,18 +122,24 @@ public abstract class ImsFeature {
* This {@link ImsFeature}'s state is unavailable and should not be communicated with. This will * This {@link ImsFeature}'s state is unavailable and should not be communicated with. This will
* remove all bindings back to the framework. Any attempt to communicate with the framework * remove all bindings back to the framework. Any attempt to communicate with the framework
* during this time will result in an {@link IllegalStateException}. * during this time will result in an {@link IllegalStateException}.
* @hide
*/ */
@SystemApi @TestApi
public static final int STATE_UNAVAILABLE = 0; public static final int STATE_UNAVAILABLE = 0;
/** /**
* This {@link ImsFeature} state is initializing and should not be communicated with. This will * This {@link ImsFeature} state is initializing and should not be communicated with. This will
* remove all bindings back to the framework. Any attempt to communicate with the framework * remove all bindings back to the framework. Any attempt to communicate with the framework
* during this time will result in an {@link IllegalStateException}. * during this time will result in an {@link IllegalStateException}.
* @hide
*/ */
@SystemApi @TestApi
public static final int STATE_INITIALIZING = 1; public static final int STATE_INITIALIZING = 1;
/** /**
* This {@link ImsFeature} is ready for communication. Do not attempt to call framework methods * This {@link ImsFeature} is ready for communication. Do not attempt to call framework methods
* until {@link #onFeatureReady()} is called. * until {@see #onFeatureReady()} is called.
* @hide
*/ */
@SystemApi @TestApi
public static final int STATE_READY = 2; public static final int STATE_READY = 2;
/** /**
@@ -155,11 +167,15 @@ public abstract class ImsFeature {
/** /**
* The capability was unable to be changed. * The capability was unable to be changed.
* @hide
*/ */
@SystemApi @TestApi
public static final int CAPABILITY_ERROR_GENERIC = -1; public static final int CAPABILITY_ERROR_GENERIC = -1;
/** /**
* The capability was able to be changed. * The capability was able to be changed.
* @hide
*/ */
@SystemApi @TestApi
public static final int CAPABILITY_SUCCESS = 0; public static final int CAPABILITY_SUCCESS = 0;
/** /**
@@ -331,7 +347,9 @@ public abstract class ImsFeature {
* *
* @see SubscriptionManager#getSubscriptionIds(int) for more information on getting the * @see SubscriptionManager#getSubscriptionIds(int) for more information on getting the
* subscription IDs associated with this slot. * subscription IDs associated with this slot.
* @hide
*/ */
@SystemApi @TestApi
public final int getSlotIndex() { public final int getSlotIndex() {
return mSlotId; return mSlotId;
} }
@@ -339,7 +357,9 @@ public abstract class ImsFeature {
/** /**
* @return The current state of the ImsFeature, set previously by {@link #setFeatureState(int)} * @return The current state of the ImsFeature, set previously by {@link #setFeatureState(int)}
* or {@link #STATE_UNAVAILABLE} if it has not been updated yet. * or {@link #STATE_UNAVAILABLE} if it has not been updated yet.
* @hide
*/ */
@SystemApi @TestApi
public @ImsState int getFeatureState() { public @ImsState int getFeatureState() {
synchronized (mLock) { synchronized (mLock) {
return mState; return mState;
@@ -351,7 +371,9 @@ public abstract class ImsFeature {
* stop communication, depending on the state sent. * stop communication, depending on the state sent.
* @param state The ImsFeature's state, defined as {@link #STATE_UNAVAILABLE}, * @param state The ImsFeature's state, defined as {@link #STATE_UNAVAILABLE},
* {@link #STATE_INITIALIZING}, or {@link #STATE_READY}. * {@link #STATE_INITIALIZING}, or {@link #STATE_READY}.
* @hide
*/ */
@SystemApi @TestApi
public final void setFeatureState(@ImsState int state) { public final void setFeatureState(@ImsState int state) {
synchronized (mLock) { synchronized (mLock) {
if (mState != state) { if (mState != state) {

View File

@@ -52,14 +52,18 @@ import java.lang.annotation.RetentionPolicy;
* *
* Any class wishing to use MmTelFeature should extend this class and implement all methods that the * Any class wishing to use MmTelFeature should extend this class and implement all methods that the
* service supports. * service supports.
* @hide
*/ */
@SystemApi
@TestApi
public class MmTelFeature extends ImsFeature { public class MmTelFeature extends ImsFeature {
private static final String LOG_TAG = "MmTelFeature"; private static final String LOG_TAG = "MmTelFeature";
/**
* @hide
*/
@SystemApi @TestApi
public MmTelFeature() {
}
private final IImsMmTelFeature mImsMMTelBinder = new IImsMmTelFeature.Stub() { private final IImsMmTelFeature mImsMMTelBinder = new IImsMmTelFeature.Stub() {
@Override @Override
@@ -215,11 +219,11 @@ public class MmTelFeature extends ImsFeature {
* {@link MmTelCapabilities#CAPABILITY_TYPE_SMS}. * {@link MmTelCapabilities#CAPABILITY_TYPE_SMS}.
* *
* The capabilities of this MmTelFeature will be set by the framework and can be queried with * The capabilities of this MmTelFeature will be set by the framework and can be queried with
* {@link #queryCapabilityStatus()}. * {@see #queryCapabilityStatus()}.
* *
* This MmTelFeature can then return the status of each of these capabilities (enabled or not) * This MmTelFeature can then return the status of each of these capabilities (enabled or not)
* by sending a {@link #notifyCapabilitiesStatusChanged} callback to the framework. The current * by sending a {@see #notifyCapabilitiesStatusChanged} callback to the framework. The current
* status can also be queried using {@link #queryCapabilityStatus()}. * status can also be queried using {@see #queryCapabilityStatus()}.
* @see #isCapable(int) * @see #isCapable(int)
*/ */
public static class MmTelCapabilities extends Capabilities { public static class MmTelCapabilities extends Capabilities {
@@ -228,13 +232,18 @@ public class MmTelFeature extends ImsFeature {
* Create a new empty {@link MmTelCapabilities} instance. * Create a new empty {@link MmTelCapabilities} instance.
* @see #addCapabilities(int) * @see #addCapabilities(int)
* @see #removeCapabilities(int) * @see #removeCapabilities(int)
* @hide
*/ */
@SystemApi @TestApi
public MmTelCapabilities() { public MmTelCapabilities() {
super(); super();
} }
/**@deprecated Use {@link MmTelCapabilities} to construct a new instance instead.*/ /**@deprecated Use {@link MmTelCapabilities} to construct a new instance instead.
* @hide
*/
@Deprecated @Deprecated
@SystemApi @TestApi
public MmTelCapabilities(Capabilities c) { public MmTelCapabilities(Capabilities c) {
mCapabilities = c.mCapabilities; mCapabilities = c.mCapabilities;
} }
@@ -243,11 +252,17 @@ public class MmTelFeature extends ImsFeature {
* Create a new {link @MmTelCapabilities} instance with the provided capabilities. * Create a new {link @MmTelCapabilities} instance with the provided capabilities.
* @param capabilities The capabilities that are supported for MmTel in the form of a * @param capabilities The capabilities that are supported for MmTel in the form of a
* bitfield. * bitfield.
* @hide
*/ */
@SystemApi @TestApi
public MmTelCapabilities(@MmTelCapability int capabilities) { public MmTelCapabilities(@MmTelCapability int capabilities) {
super(capabilities); super(capabilities);
} }
/**
* @hide
*/
@SystemApi @TestApi
@IntDef(flag = true, @IntDef(flag = true,
value = { value = {
CAPABILITY_TYPE_VOICE, CAPABILITY_TYPE_VOICE,
@@ -278,23 +293,39 @@ public class MmTelFeature extends ImsFeature {
*/ */
public static final int CAPABILITY_TYPE_SMS = 1 << 3; public static final int CAPABILITY_TYPE_SMS = 1 << 3;
/**
* @hide
*/
@Override @Override
@SystemApi @TestApi
public final void addCapabilities(@MmTelCapability int capabilities) { public final void addCapabilities(@MmTelCapability int capabilities) {
super.addCapabilities(capabilities); super.addCapabilities(capabilities);
} }
/**
* @hide
*/
@Override @Override
@SystemApi @TestApi
public final void removeCapabilities(@MmTelCapability int capability) { public final void removeCapabilities(@MmTelCapability int capability) {
super.removeCapabilities(capability); super.removeCapabilities(capability);
} }
/**
* @hide
*/
@Override @Override
@SystemApi @TestApi
public final boolean isCapable(@MmTelCapability int capabilities) { public final boolean isCapable(@MmTelCapability int capabilities) {
return super.isCapable(capabilities); return super.isCapable(capabilities);
} }
/**
* @hide
*/
@NonNull @NonNull
@Override @Override
@SystemApi @TestApi
public String toString() { public String toString() {
StringBuilder builder = new StringBuilder("MmTel Capabilities - ["); StringBuilder builder = new StringBuilder("MmTel Capabilities - [");
builder.append("Voice: "); builder.append("Voice: ");
@@ -319,8 +350,10 @@ public class MmTelFeature extends ImsFeature {
/** /**
* Called when the IMS provider receives an incoming call. * Called when the IMS provider receives an incoming call.
* @param c The {@link ImsCallSession} associated with the new call. * @param c The {@link ImsCallSession} associated with the new call.
* @hide
*/ */
@Override @Override
@SystemApi @TestApi
public void onIncomingCall(IImsCallSession c, Bundle extras) { public void onIncomingCall(IImsCallSession c, Bundle extras) {
} }
@@ -329,8 +362,10 @@ public class MmTelFeature extends ImsFeature {
* Called when the IMS provider implicitly rejects an incoming call during setup. * Called when the IMS provider implicitly rejects an incoming call during setup.
* @param callProfile An {@link ImsCallProfile} with the call details. * @param callProfile An {@link ImsCallProfile} with the call details.
* @param reason The {@link ImsReasonInfo} reason for call rejection. * @param reason The {@link ImsReasonInfo} reason for call rejection.
* @hide
*/ */
@Override @Override
@SystemApi @TestApi
public void onRejectedCall(ImsCallProfile callProfile, ImsReasonInfo reason) { public void onRejectedCall(ImsCallProfile callProfile, ImsReasonInfo reason) {
} }
@@ -338,8 +373,10 @@ public class MmTelFeature extends ImsFeature {
/** /**
* Updates the Listener when the voice message count for IMS has changed. * Updates the Listener when the voice message count for IMS has changed.
* @param count an integer representing the new message count. * @param count an integer representing the new message count.
* @hide
*/ */
@Override @Override
@SystemApi @TestApi
public void onVoiceMessageCountUpdate(int count) { public void onVoiceMessageCountUpdate(int count) {
} }
@@ -348,14 +385,22 @@ public class MmTelFeature extends ImsFeature {
/** /**
* To be returned by {@link #shouldProcessCall(String[])} when the ImsService should process the * To be returned by {@link #shouldProcessCall(String[])} when the ImsService should process the
* outgoing call as IMS. * outgoing call as IMS.
* @hide
*/ */
@SystemApi @TestApi
public static final int PROCESS_CALL_IMS = 0; public static final int PROCESS_CALL_IMS = 0;
/** /**
* To be returned by {@link #shouldProcessCall(String[])} when the telephony framework should * To be returned by {@link #shouldProcessCall(String[])} when the telephony framework should
* not process the outgoing call as IMS and should instead use circuit switch. * not process the outgoing call as IMS and should instead use circuit switch.
* @hide
*/ */
@SystemApi @TestApi
public static final int PROCESS_CALL_CSFB = 1; public static final int PROCESS_CALL_CSFB = 1;
/**
* @hide
*/
@SystemApi @TestApi
@IntDef(flag = true, @IntDef(flag = true,
value = { value = {
PROCESS_CALL_IMS, PROCESS_CALL_IMS,
@@ -368,7 +413,9 @@ public class MmTelFeature extends ImsFeature {
* If the flag is present and true, it indicates that the incoming call is for USSD. * If the flag is present and true, it indicates that the incoming call is for USSD.
* <p> * <p>
* This is an optional boolean flag. * This is an optional boolean flag.
* @hide
*/ */
@SystemApi @TestApi
public static final String EXTRA_IS_USSD = "android.telephony.ims.feature.extra.IS_USSD"; public static final String EXTRA_IS_USSD = "android.telephony.ims.feature.extra.IS_USSD";
/** /**
@@ -379,7 +426,9 @@ public class MmTelFeature extends ImsFeature {
* certain situations. * certain situations.
* <p> * <p>
* This is an optional boolean flag. * This is an optional boolean flag.
* @hide
*/ */
@SystemApi @TestApi
public static final String EXTRA_IS_UNKNOWN_CALL = public static final String EXTRA_IS_UNKNOWN_CALL =
"android.telephony.ims.feature.extra.IS_UNKNOWN_CALL"; "android.telephony.ims.feature.extra.IS_UNKNOWN_CALL";
@@ -388,6 +437,7 @@ public class MmTelFeature extends ImsFeature {
/** /**
* @param listener A {@link Listener} used when the MmTelFeature receives an incoming call and * @param listener A {@link Listener} used when the MmTelFeature receives an incoming call and
* notifies the framework. * notifies the framework.
* @hide
*/ */
private void setListener(IImsMmTelListener listener) { private void setListener(IImsMmTelListener listener) {
synchronized (mLock) { synchronized (mLock) {
@@ -406,9 +456,11 @@ public class MmTelFeature extends ImsFeature {
* Should be a subset of the capabilities that are enabled by the framework in * Should be a subset of the capabilities that are enabled by the framework in
* {@link #changeEnabledCapabilities}. * {@link #changeEnabledCapabilities}.
* @return A copy of the current MmTelFeature capability status. * @return A copy of the current MmTelFeature capability status.
* @hide
*/ */
@Override @Override
public final MmTelCapabilities queryCapabilityStatus() { @SystemApi @TestApi
public @NonNull final MmTelCapabilities queryCapabilityStatus() {
return new MmTelCapabilities(super.queryCapabilityStatus()); return new MmTelCapabilities(super.queryCapabilityStatus());
} }
@@ -420,7 +472,9 @@ public class MmTelFeature extends ImsFeature {
* the status of that capability is disabled. This can happen if the network does not currently * the status of that capability is disabled. This can happen if the network does not currently
* support the capability that is enabled. A capability that is disabled by the framework (via * support the capability that is enabled. A capability that is disabled by the framework (via
* {@link #changeEnabledCapabilities}) should also show the status as disabled. * {@link #changeEnabledCapabilities}) should also show the status as disabled.
* @hide
*/ */
@SystemApi @TestApi
public final void notifyCapabilitiesStatusChanged(@NonNull MmTelCapabilities c) { public final void notifyCapabilitiesStatusChanged(@NonNull MmTelCapabilities c) {
if (c == null) { if (c == null) {
throw new IllegalArgumentException("MmTelCapabilities must be non-null!"); throw new IllegalArgumentException("MmTelCapabilities must be non-null!");
@@ -433,7 +487,9 @@ public class MmTelFeature extends ImsFeature {
* @param c The {@link ImsCallSessionImplBase} of the new incoming call. * @param c The {@link ImsCallSessionImplBase} of the new incoming call.
* @param extras A bundle containing extra parameters related to the call. See * @param extras A bundle containing extra parameters related to the call. See
* {@link #EXTRA_IS_UNKNOWN_CALL} and {@link #EXTRA_IS_USSD} above. * {@link #EXTRA_IS_UNKNOWN_CALL} and {@link #EXTRA_IS_USSD} above.
* @hide
*/ */
@SystemApi @TestApi
public final void notifyIncomingCall(@NonNull ImsCallSessionImplBase c, public final void notifyIncomingCall(@NonNull ImsCallSessionImplBase c,
@NonNull Bundle extras) { @NonNull Bundle extras) {
if (c == null || extras == null) { if (c == null || extras == null) {
@@ -458,7 +514,9 @@ public class MmTelFeature extends ImsFeature {
* @param callProfile The {@link ImsCallProfile} IMS call profile with details. * @param callProfile The {@link ImsCallProfile} IMS call profile with details.
* This can be null if no call information is available for the rejected call. * This can be null if no call information is available for the rejected call.
* @param reason The {@link ImsReasonInfo} call rejection reason. * @param reason The {@link ImsReasonInfo} call rejection reason.
* * @hide
*/ */
@SystemApi @TestApi
public final void notifyRejectedCall(@NonNull ImsCallProfile callProfile, public final void notifyRejectedCall(@NonNull ImsCallProfile callProfile,
@NonNull ImsReasonInfo reason) { @NonNull ImsReasonInfo reason) {
if (callProfile == null || reason == null) { if (callProfile == null || reason == null) {
@@ -497,7 +555,9 @@ public class MmTelFeature extends ImsFeature {
/** /**
* Notify the framework of a change in the Voice Message count. * Notify the framework of a change in the Voice Message count.
* @link count the new Voice Message count. * @link count the new Voice Message count.
* @hide
*/ */
@SystemApi @TestApi
public final void notifyVoiceMessageCountUpdate(int count) { public final void notifyVoiceMessageCountUpdate(int count) {
synchronized (mLock) { synchronized (mLock) {
if (mListener == null) { if (mListener == null) {
@@ -518,8 +578,10 @@ public class MmTelFeature extends ImsFeature {
* status for capability A. * status for capability A.
* @param capability The capability that we are querying the configuration for. * @param capability The capability that we are querying the configuration for.
* @return true if the capability is enabled, false otherwise. * @return true if the capability is enabled, false otherwise.
* @hide
*/ */
@Override @Override
@SystemApi @TestApi
public boolean queryCapabilityConfiguration(@MmTelCapabilities.MmTelCapability int capability, public boolean queryCapabilityConfiguration(@MmTelCapabilities.MmTelCapability int capability,
@ImsRegistrationImplBase.ImsRegistrationTech int radioTech) { @ImsRegistrationImplBase.ImsRegistrationTech int radioTech) {
// Base implementation - Override to provide functionality // Base implementation - Override to provide functionality
@@ -537,8 +599,10 @@ public class MmTelFeature extends ImsFeature {
* Enabling/Disabling a capability here indicates that the capability should be registered or * Enabling/Disabling a capability here indicates that the capability should be registered or
* deregistered (depending on the capability change) and become available or unavailable to * deregistered (depending on the capability change) and become available or unavailable to
* the framework. * the framework.
* * @hide
*/ */
@Override @Override
@SystemApi @TestApi
public void changeEnabledCapabilities(@NonNull CapabilityChangeRequest request, public void changeEnabledCapabilities(@NonNull CapabilityChangeRequest request,
@NonNull CapabilityCallbackProxy c) { @NonNull CapabilityCallbackProxy c) {
// Base implementation, no-op // Base implementation, no-op
@@ -561,7 +625,9 @@ public class MmTelFeature extends ImsFeature {
* {@link ImsCallProfile#CALL_TYPE_VS_TX} * {@link ImsCallProfile#CALL_TYPE_VS_TX}
* {@link ImsCallProfile#CALL_TYPE_VS_RX} * {@link ImsCallProfile#CALL_TYPE_VS_RX}
* @return a {@link ImsCallProfile} object * @return a {@link ImsCallProfile} object
* @hide
*/ */
@SystemApi @TestApi
public @Nullable ImsCallProfile createCallProfile(int callSessionType, int callType) { public @Nullable ImsCallProfile createCallProfile(int callSessionType, int callType) {
// Base Implementation - Should be overridden // Base Implementation - Should be overridden
return null; return null;
@@ -582,7 +648,9 @@ public class MmTelFeature extends ImsFeature {
* {@link ImsCallSession} directly. * {@link ImsCallSession} directly.
* *
* @param profile a call profile to make the call * @param profile a call profile to make the call
* @hide
*/ */
@SystemApi @TestApi
public @Nullable ImsCallSessionImplBase createCallSession(@NonNull ImsCallProfile profile) { public @Nullable ImsCallSessionImplBase createCallSession(@NonNull ImsCallProfile profile) {
// Base Implementation - Should be overridden // Base Implementation - Should be overridden
return null; return null;
@@ -599,7 +667,9 @@ public class MmTelFeature extends ImsFeature {
* call as a conference. * call as a conference.
* @return a {@link ProcessCallResult} to the framework, which will be used to determine if the * @return a {@link ProcessCallResult} to the framework, which will be used to determine if the
* call will be placed over IMS or via CSFB. * call will be placed over IMS or via CSFB.
* @hide
*/ */
@SystemApi @TestApi
public @ProcessCallResult int shouldProcessCall(@NonNull String[] numbers) { public @ProcessCallResult int shouldProcessCall(@NonNull String[] numbers) {
return PROCESS_CALL_IMS; return PROCESS_CALL_IMS;
} }
@@ -632,7 +702,9 @@ public class MmTelFeature extends ImsFeature {
/** /**
* @return The {@link ImsUtImplBase} Ut interface implementation for the supplementary service * @return The {@link ImsUtImplBase} Ut interface implementation for the supplementary service
* configuration. * configuration.
* @hide
*/ */
@SystemApi @TestApi
public @NonNull ImsUtImplBase getUt() { public @NonNull ImsUtImplBase getUt() {
// Base Implementation - Should be overridden // Base Implementation - Should be overridden
return new ImsUtImplBase(); return new ImsUtImplBase();
@@ -641,7 +713,9 @@ public class MmTelFeature extends ImsFeature {
/** /**
* @return The {@link ImsEcbmImplBase} Emergency call-back mode interface for emergency VoLTE * @return The {@link ImsEcbmImplBase} Emergency call-back mode interface for emergency VoLTE
* calls that support it. * calls that support it.
* @hide
*/ */
@SystemApi @TestApi
public @NonNull ImsEcbmImplBase getEcbm() { public @NonNull ImsEcbmImplBase getEcbm() {
// Base Implementation - Should be overridden // Base Implementation - Should be overridden
return new ImsEcbmImplBase(); return new ImsEcbmImplBase();
@@ -650,7 +724,9 @@ public class MmTelFeature extends ImsFeature {
/** /**
* @return The {@link ImsMultiEndpointImplBase} implementation for implementing Dialog event * @return The {@link ImsMultiEndpointImplBase} implementation for implementing Dialog event
* package processing for multi-endpoint. * package processing for multi-endpoint.
* @hide
*/ */
@SystemApi @TestApi
public @NonNull ImsMultiEndpointImplBase getMultiEndpoint() { public @NonNull ImsMultiEndpointImplBase getMultiEndpoint() {
// Base Implementation - Should be overridden // Base Implementation - Should be overridden
return new ImsMultiEndpointImplBase(); return new ImsMultiEndpointImplBase();
@@ -676,7 +752,9 @@ public class MmTelFeature extends ImsFeature {
* // Remote side is dead * // Remote side is dead
* } * }
* } * }
* @hide
*/ */
@SystemApi @TestApi
public void setUiTtyMode(int mode, @Nullable Message onCompleteMessage) { public void setUiTtyMode(int mode, @Nullable Message onCompleteMessage) {
// Base Implementation - Should be overridden // Base Implementation - Should be overridden
} }
@@ -710,7 +788,9 @@ public class MmTelFeature extends ImsFeature {
* *
* @return an instance of {@link ImsSmsImplBase} which should be implemented by the IMS * @return an instance of {@link ImsSmsImplBase} which should be implemented by the IMS
* Provider. * Provider.
* @hide
*/ */
@SystemApi @TestApi
public @NonNull ImsSmsImplBase getSmsImplementation() { public @NonNull ImsSmsImplBase getSmsImplementation() {
return new ImsSmsImplBase(); return new ImsSmsImplBase();
} }
@@ -719,14 +799,22 @@ public class MmTelFeature extends ImsFeature {
return getSmsImplementation().getSmsFormat(); return getSmsImplementation().getSmsFormat();
} }
/**{@inheritDoc}*/ /**
* {@inheritDoc}
* @hide
*/
@Override @Override
@SystemApi @TestApi
public void onFeatureRemoved() { public void onFeatureRemoved() {
// Base Implementation - Should be overridden // Base Implementation - Should be overridden
} }
/**{@inheritDoc}*/ /**
* {@inheritDoc}
* @hide
*/
@Override @Override
@SystemApi @TestApi
public void onFeatureReady() { public void onFeatureReady() {
// Base Implementation - Should be overridden // Base Implementation - Should be overridden
} }