diff --git a/api/current.txt b/api/current.txt index 94890213d3a8e..cb1fee4d1b7d2 100644 --- a/api/current.txt +++ b/api/current.txt @@ -38,6 +38,7 @@ package android { field public static final java.lang.String BIND_TELECOM_CONNECTION_SERVICE = "android.permission.BIND_TELECOM_CONNECTION_SERVICE"; field public static final java.lang.String BIND_TEXT_SERVICE = "android.permission.BIND_TEXT_SERVICE"; field public static final java.lang.String BIND_TV_INPUT = "android.permission.BIND_TV_INPUT"; + field public static final java.lang.String BIND_VISUAL_VOICEMAIL_SERVICE = "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"; field public static final java.lang.String BIND_VOICE_INTERACTION = "android.permission.BIND_VOICE_INTERACTION"; field public static final java.lang.String BIND_VPN_SERVICE = "android.permission.BIND_VPN_SERVICE"; field public static final java.lang.String BIND_VR_LISTENER_SERVICE = "android.permission.BIND_VR_LISTENER_SERVICE"; @@ -37933,6 +37934,54 @@ package android.telephony { method public void onReceiveUssdResponseFailed(java.lang.String, int); } + public abstract class VisualVoicemailService extends android.app.Service { + ctor public VisualVoicemailService(); + method public android.os.IBinder onBind(android.content.Intent); + method public abstract void onCellServiceConnected(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle); + method public abstract void onSimRemoved(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle); + method public abstract void onSmsReceived(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telephony.VisualVoicemailSms); + method public abstract void onStopped(android.telephony.VisualVoicemailService.VisualVoicemailTask); + method public static final void sendVisualVoicemailSms(android.content.Context, android.telecom.PhoneAccountHandle, java.lang.String, short, java.lang.String, android.app.PendingIntent); + method public static final void setSmsFilterSettings(android.content.Context, android.telecom.PhoneAccountHandle, android.telephony.VisualVoicemailSmsFilterSettings); + field public static final java.lang.String SERVICE_INTERFACE = "android.telephony.VisualVoicemailService"; + } + + public static class VisualVoicemailService.VisualVoicemailTask { + method public final void finish(); + } + + public final class VisualVoicemailSms implements android.os.Parcelable { + method public int describeContents(); + method public android.os.Bundle getFields(); + method public java.lang.String getMessageBody(); + method public android.telecom.PhoneAccountHandle getPhoneAccountHandle(); + method public java.lang.String getPrefix(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public final class VisualVoicemailSmsFilterSettings implements android.os.Parcelable { + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + field public static final java.lang.String DEFAULT_CLIENT_PREFIX = "//VVM"; + field public static final int DEFAULT_DESTINATION_PORT = -1; // 0xffffffff + field public static final java.util.List DEFAULT_ORIGINATING_NUMBERS; + field public static final int DESTINATION_PORT_ANY = -1; // 0xffffffff + field public static final int DESTINATION_PORT_DATA_SMS = -2; // 0xfffffffe + field public final java.lang.String clientPrefix; + field public final int destinationPort; + field public final java.util.List originatingNumbers; + } + + public static class VisualVoicemailSmsFilterSettings.Builder { + ctor public VisualVoicemailSmsFilterSettings.Builder(); + method public android.telephony.VisualVoicemailSmsFilterSettings build(); + method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setClientPrefix(java.lang.String); + method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setDestinationPort(int); + method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setOriginatingNumbers(java.util.List); + } + } package android.telephony.cdma { diff --git a/api/system-current.txt b/api/system-current.txt index 2190abb2ef67f..0ad1eea4ef467 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -55,6 +55,7 @@ package android { field public static final java.lang.String BIND_TRUST_AGENT = "android.permission.BIND_TRUST_AGENT"; field public static final java.lang.String BIND_TV_INPUT = "android.permission.BIND_TV_INPUT"; field public static final java.lang.String BIND_TV_REMOTE_SERVICE = "android.permission.BIND_TV_REMOTE_SERVICE"; + field public static final java.lang.String BIND_VISUAL_VOICEMAIL_SERVICE = "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"; field public static final java.lang.String BIND_VOICE_INTERACTION = "android.permission.BIND_VOICE_INTERACTION"; field public static final java.lang.String BIND_VPN_SERVICE = "android.permission.BIND_VPN_SERVICE"; field public static final java.lang.String BIND_VR_LISTENER_SERVICE = "android.permission.BIND_VR_LISTENER_SERVICE"; @@ -41084,6 +41085,54 @@ package android.telephony { method public void onReceiveUssdResponseFailed(java.lang.String, int); } + public abstract class VisualVoicemailService extends android.app.Service { + ctor public VisualVoicemailService(); + method public android.os.IBinder onBind(android.content.Intent); + method public abstract void onCellServiceConnected(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle); + method public abstract void onSimRemoved(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle); + method public abstract void onSmsReceived(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telephony.VisualVoicemailSms); + method public abstract void onStopped(android.telephony.VisualVoicemailService.VisualVoicemailTask); + method public static final void sendVisualVoicemailSms(android.content.Context, android.telecom.PhoneAccountHandle, java.lang.String, short, java.lang.String, android.app.PendingIntent); + method public static final void setSmsFilterSettings(android.content.Context, android.telecom.PhoneAccountHandle, android.telephony.VisualVoicemailSmsFilterSettings); + field public static final java.lang.String SERVICE_INTERFACE = "android.telephony.VisualVoicemailService"; + } + + public static class VisualVoicemailService.VisualVoicemailTask { + method public final void finish(); + } + + public final class VisualVoicemailSms implements android.os.Parcelable { + method public int describeContents(); + method public android.os.Bundle getFields(); + method public java.lang.String getMessageBody(); + method public android.telecom.PhoneAccountHandle getPhoneAccountHandle(); + method public java.lang.String getPrefix(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public final class VisualVoicemailSmsFilterSettings implements android.os.Parcelable { + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + field public static final java.lang.String DEFAULT_CLIENT_PREFIX = "//VVM"; + field public static final int DEFAULT_DESTINATION_PORT = -1; // 0xffffffff + field public static final java.util.List DEFAULT_ORIGINATING_NUMBERS; + field public static final int DESTINATION_PORT_ANY = -1; // 0xffffffff + field public static final int DESTINATION_PORT_DATA_SMS = -2; // 0xfffffffe + field public final java.lang.String clientPrefix; + field public final int destinationPort; + field public final java.util.List originatingNumbers; + } + + public static class VisualVoicemailSmsFilterSettings.Builder { + ctor public VisualVoicemailSmsFilterSettings.Builder(); + method public android.telephony.VisualVoicemailSmsFilterSettings build(); + method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setClientPrefix(java.lang.String); + method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setDestinationPort(int); + method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setOriginatingNumbers(java.util.List); + } + } package android.telephony.cdma { diff --git a/api/test-current.txt b/api/test-current.txt index a55fa4e6b7a17..ceb1af7faf208 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -38,6 +38,7 @@ package android { field public static final java.lang.String BIND_TELECOM_CONNECTION_SERVICE = "android.permission.BIND_TELECOM_CONNECTION_SERVICE"; field public static final java.lang.String BIND_TEXT_SERVICE = "android.permission.BIND_TEXT_SERVICE"; field public static final java.lang.String BIND_TV_INPUT = "android.permission.BIND_TV_INPUT"; + field public static final java.lang.String BIND_VISUAL_VOICEMAIL_SERVICE = "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"; field public static final java.lang.String BIND_VOICE_INTERACTION = "android.permission.BIND_VOICE_INTERACTION"; field public static final java.lang.String BIND_VPN_SERVICE = "android.permission.BIND_VPN_SERVICE"; field public static final java.lang.String BIND_VR_LISTENER_SERVICE = "android.permission.BIND_VR_LISTENER_SERVICE"; @@ -38029,6 +38030,54 @@ package android.telephony { method public void onReceiveUssdResponseFailed(java.lang.String, int); } + public abstract class VisualVoicemailService extends android.app.Service { + ctor public VisualVoicemailService(); + method public android.os.IBinder onBind(android.content.Intent); + method public abstract void onCellServiceConnected(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle); + method public abstract void onSimRemoved(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle); + method public abstract void onSmsReceived(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telephony.VisualVoicemailSms); + method public abstract void onStopped(android.telephony.VisualVoicemailService.VisualVoicemailTask); + method public static final void sendVisualVoicemailSms(android.content.Context, android.telecom.PhoneAccountHandle, java.lang.String, short, java.lang.String, android.app.PendingIntent); + method public static final void setSmsFilterSettings(android.content.Context, android.telecom.PhoneAccountHandle, android.telephony.VisualVoicemailSmsFilterSettings); + field public static final java.lang.String SERVICE_INTERFACE = "android.telephony.VisualVoicemailService"; + } + + public static class VisualVoicemailService.VisualVoicemailTask { + method public final void finish(); + } + + public final class VisualVoicemailSms implements android.os.Parcelable { + method public int describeContents(); + method public android.os.Bundle getFields(); + method public java.lang.String getMessageBody(); + method public android.telecom.PhoneAccountHandle getPhoneAccountHandle(); + method public java.lang.String getPrefix(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public final class VisualVoicemailSmsFilterSettings implements android.os.Parcelable { + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + field public static final java.lang.String DEFAULT_CLIENT_PREFIX = "//VVM"; + field public static final int DEFAULT_DESTINATION_PORT = -1; // 0xffffffff + field public static final java.util.List DEFAULT_ORIGINATING_NUMBERS; + field public static final int DESTINATION_PORT_ANY = -1; // 0xffffffff + field public static final int DESTINATION_PORT_DATA_SMS = -2; // 0xfffffffe + field public final java.lang.String clientPrefix; + field public final int destinationPort; + field public final java.util.List originatingNumbers; + } + + public static class VisualVoicemailSmsFilterSettings.Builder { + ctor public VisualVoicemailSmsFilterSettings.Builder(); + method public android.telephony.VisualVoicemailSmsFilterSettings build(); + method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setClientPrefix(java.lang.String); + method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setDestinationPort(int); + method public android.telephony.VisualVoicemailSmsFilterSettings.Builder setOriginatingNumbers(java.util.List); + } + } package android.telephony.cdma { diff --git a/core/java/android/provider/VoicemailContract.java b/core/java/android/provider/VoicemailContract.java index 5099eebf6eb16..c3cbcdc3932c9 100644 --- a/core/java/android/provider/VoicemailContract.java +++ b/core/java/android/provider/VoicemailContract.java @@ -106,15 +106,7 @@ public class VoicemailContract { /** * Broadcast intent to inform a new visual voicemail SMS has been received. This intent will - * only be delivered to the voicemail client. The intent will have the following extra values: - * - *
    - *
  • {@link #EXTRA_VOICEMAIL_SMS_TYPE} - (String) The event type of the SMS. Common - * values are "SYNC" or "STATUS"
  • - *
  • {@link #EXTRA_VOICEMAIL_SMS_DATA} - (Bundle) The fields sent by the SMS
  • - *
  • {@link #EXTRA_VOICEMAIL_SMS_SUBID} - (Integer) The subscription ID of the - * phone account that received the SMS
  • - *
+ * only be delivered to the telephony service. {@link #EXTRA_VOICEMAIL_SMS} will be included. */ /** @hide */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) @@ -122,42 +114,11 @@ public class VoicemailContract { "android.intent.action.VOICEMAIL_SMS_RECEIVED"; /** - * Optional extra included in {@link #ACTION_VOICEMAIL_SMS_RECEIVED} broadcast intents to - * indicate the event type of the SMS. Common values are "SYNC" or "STATUS". The extra will not - * exist if the framework cannot parse the SMS as voicemail but the carrier pattern indicates - * it is. - */ - /** @hide */ - public static final String EXTRA_VOICEMAIL_SMS_PREFIX = - "com.android.voicemail.extra.VOICEMAIL_SMS_PREFIX"; - - /** - * Optional extra included in {@link #ACTION_VOICEMAIL_SMS_RECEIVED} broadcast intents to - * indicate the fields sent by the SMS. The extra will not exist if the framework cannot - * parse the SMS as voicemail but the carrier pattern indicates it is. - */ - /** @hide */ - public static final String EXTRA_VOICEMAIL_SMS_FIELDS = - "com.android.voicemail.extra.VOICEMAIL_SMS_FIELDS"; - - /** - * Extra included in {@link #ACTION_VOICEMAIL_SMS_RECEIVED} broadcast intents to indicate the - * message body of the SMS. This extra is included if the framework cannot - * parse the SMS as voicemail but the carrier pattern indicates it is. - */ - /** + * Extra in {@link #ACTION_VOICEMAIL_SMS_RECEIVED} indicating the content of the SMS. + * * @hide */ - public static final String EXTRA_VOICEMAIL_SMS_MESSAGE_BODY = - "com.android.voicemail.extra.VOICEMAIL_SMS_MESSAGE_BODY"; - - /** - * Extra included in {@link #ACTION_VOICEMAIL_SMS_RECEIVED} broadcast intents to indicate he - * subscription ID of the phone account that received the SMS. - */ - /** @hide */ - public static final String EXTRA_VOICEMAIL_SMS_SUBID = - "com.android.voicemail.extra.VOICEMAIL_SMS_SUBID"; + public static final String EXTRA_VOICEMAIL_SMS = "android.provider.extra.VOICEMAIL_SMS"; /** * Extra included in {@link Intent#ACTION_PROVIDER_CHANGED} broadcast intents to indicate if the diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 6f33f2787340a..201e5780a8280 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -1540,6 +1540,14 @@ + + +