Loading core/java/android/provider/VoicemailContract.java +41 −0 Original line number Diff line number Diff line Loading @@ -106,6 +106,47 @@ public class VoicemailContract { @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_SYNC_VOICEMAIL = "android.intent.action.SYNC_VOICEMAIL"; /** * 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: * * <ul> * <li><em>{@link #EXTRA_VOICEMAIL_SMS_TYPE}</em> - (String) The event type of the SMS. Common * values are "SYNC" or "STATUS"</li> * <li><em>{@link #EXTRA_VOICEMAIL_SMS_DATA}</em> - (Bundle) The fields sent by the SMS</li> * <li><em>{@link #EXTRA_VOICEMAIL_SMS_SUBID}</em> - (Integer) The subscription ID of the * phone account that received the SMS</li> * </ul> */ /** @hide */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_VOICEMAIL_SMS_RECEIVED = "android.intent.action.VOICEMAIL_SMS_RECEIVED"; /** * Extra included in {@link #ACTION_VOICEMAIL_SMS_RECEIVED} broadcast intents to indicate the * event type of the SMS. Common values are "SYNC" or "STATUS" */ /** @hide */ public static final String EXTRA_VOICEMAIL_SMS_PREFIX = "com.android.voicemail.extra.VOICEMAIL_SMS_PREFIX"; /** * Extra included in {@link #ACTION_VOICEMAIL_SMS_RECEIVED} broadcast intents to indicate the * fields sent by the SMS */ /** @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 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"; /** * Extra included in {@link Intent#ACTION_PROVIDER_CHANGED} broadcast intents to indicate if the * receiving package made this change. Loading telephony/java/android/telephony/TelephonyManager.java +191 −1 Original line number Diff line number Diff line Loading @@ -720,6 +720,21 @@ public class TelephonyManager { */ public static final String VVM_TYPE_CVVM = "vvm_type_cvvm"; /* Visual voicemail SMS filter constants */ /** * The visual voicemail SMS message does not have to be a data SMS, and can be directed to any * port. * @hide */ public static final int VVM_SMS_FILTER_DESTINATION_PORT_ANY = -1; /** * The visual voicemail SMS message can be directed to any port, but must be a data SMS. * @hide */ public static final int VVM_SMS_FILTER_DESTINATION_PORT_DATA_SMS = -2; // // // Device Info Loading Loading @@ -2420,6 +2435,181 @@ public class TelephonyManager { return false; } /** * Enables or disables the visual voicemail SMS filter for a phone account. When the filter is * enabled, Incoming SMS messages matching the OMTP VVM SMS interface will be redirected to the * visual voicemail client with * {@link android.provider.VoicemailContract.ACTION_VOICEMAIL_SMS_RECEIVED}. * @see #setVisualVoicemailSmsFilterPrefix(int, String) * @see #setVisualVoicemailSmsFilterOriginatingNumbers(int, String[]) * @see #setVisualVoicemailSmsFilterDestinationPort(int, int) * * <p>This takes effect only when the caller is the default dialer. * * @param subId The subscription id of the phone account. * @param value The new state of the filter */ /** @hide */ public void setVisualVoicemailSmsFilterEnabled(int subId, boolean value){ try { ITelephony telephony = getITelephony(); if (telephony != null) telephony.setVisualVoicemailSmsFilterEnabled(subId, value); } catch (RemoteException ex) { } catch (NullPointerException ex) { } } /** * Returns whether the visual voicemail SMS filter is enabled for a phone account. * * @param packageName The visual voicemail client to read the settings from * @param subId The subscription id of the phone account. */ /** @hide */ public boolean isVisualVoicemailSmsFilterEnabled(String packageName, int subId){ try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.isVisualVoicemailSmsFilterEnabled(packageName, subId); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } return false; } /** * Sets the client prefix for the visual voicemail SMS filter of a phone account. The client * prefix will appear at the start of a visual voicemail SMS message, followed by a colon(:). * * <p>This takes effect only when the caller is the default dialer. * * @param subId The subscription id of the phone account. * @param prefix The client prefix */ /** @hide */ public void setVisualVoicemailSmsFilterClientPrefix(int subId, String prefix){ try { ITelephony telephony = getITelephony(); if (telephony != null) { telephony.setVisualVoicemailSmsFilterClientPrefix(subId, prefix); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } } /** * Returns the client prefix for the visual voicemail SMS filter of a phone account. The client * prefix will appear at the start of a visual voicemail SMS message, followed by a colon(:). * * @param packageName The visual voicemail client to read the settings from * @param subId The subscription id of the phone account. */ /** @hide */ public String getVisualVoicemailSmsFilterClientPrefix(String packageName, int subId){ try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.getVisualVoicemailSmsFilterClientPrefix(packageName, subId); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } return null; } /** * Sets the originating number whitelist for the visual voicemail SMS filter of a phone * account. If the list is not null only the SMS messages from a number in the list can be * considered as a visual voicemail SMS. Otherwise, messages from any address will be * considered. * * <p>This takes effect only when the caller is the default dialer. * * @param subId The subscription id of the phone account. * @param numbers A array representing the white list, or null to disable number filtering. */ /** @hide */ public void setVisualVoicemailSmsFilterOriginatingNumbers(int subId, @Nullable String[] numbers) { try { ITelephony telephony = getITelephony(); if (telephony != null) { telephony.setVisualVoicemailSmsFilterOriginatingNumbers(subId, numbers); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } } /** * Returns the originating number whitelist for the visual voicemail SMS filter of a phone * account. If the list is not null only the SMS messages from a number in the list can be * considered as a visual voicemail SMS. Otherwise, messages from any address will be * considered. * * @param packageName The visual voicemail client to read the settings from * @param subId The subscription id of the phone account. */ /** @hide */ public String[] getVisualVoicemailSmsFilterOriginatingNumbers(String packageName, int subId){ try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.getVisualVoicemailSmsFilterOriginatingNumbers(packageName, subId); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } return null; } /** * Sets the destination port for the visual voicemail SMS filter of a phone * account. * * <p>This takes effect only when the caller is the default dialer. * * @param subId The subscription id of the phone account. * @param port The destination port, or {@link #VVM_SMS_FILTER_DESTINATION_PORT_ANY}, or * {@link #VVM_SMS_FILTER_DESTINATION_PORT_DATA_SMS} */ /** @hide */ public void setVisualVoicemailSmsFilterDestinationPort(int subId, int port){ try { ITelephony telephony = getITelephony(); if (telephony != null) { telephony.setVisualVoicemailSmsFilterDestinationPort(subId, port); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } } /** * Returns the destination port for the visual voicemail SMS filter of a phone * account. * * @param packageName The visual voicemail client to read the settings from * @param subId The subscription id of the phone account. * @returns port The destination port, or {@link #VVM_SMS_FILTER_DESTINATION_PORT_ANY}, or * {@link #VVM_SMS_FILTER_DESTINATION_PORT_DATA_SMS} */ /** @hide */ public int getVisualVoicemailSmsFilterDestinationPort(String packageName, int subId){ try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.getVisualVoicemailSmsFilterDestinationPort(packageName, subId); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } return VVM_SMS_FILTER_DESTINATION_PORT_ANY; } /** * Returns the voice mail count. Return 0 if unavailable, -1 if there are unread voice messages * but the count is unknown. Loading telephony/java/com/android/internal/telephony/ITelephony.aidl +20 −0 Original line number Diff line number Diff line Loading @@ -450,6 +450,26 @@ interface ITelephony { */ int getVoiceMessageCountForSubscriber(int subId); // Not oneway, caller needs to make sure the vaule is set before receiving a SMS void setVisualVoicemailSmsFilterEnabled(int subId, boolean value); boolean isVisualVoicemailSmsFilterEnabled(String packageName, int subId); // Not oneway, caller needs to make sure the vaule is set before receiving a SMS void setVisualVoicemailSmsFilterClientPrefix(int subId, String prefix); String getVisualVoicemailSmsFilterClientPrefix(String packageName, int subId); // Not oneway, caller needs to make sure the vaule is set before receiving a SMS void setVisualVoicemailSmsFilterOriginatingNumbers(int subId, in String[] numbers); String[] getVisualVoicemailSmsFilterOriginatingNumbers(String packageName, int subId); // Not oneway, caller needs to make sure the vaule is set before receiving a SMS void setVisualVoicemailSmsFilterDestinationPort(int subId, int port); int getVisualVoicemailSmsFilterDestinationPort(String packageName, int subId); /** * Returns the network type for data transmission * Legacy call, permission-free Loading Loading
core/java/android/provider/VoicemailContract.java +41 −0 Original line number Diff line number Diff line Loading @@ -106,6 +106,47 @@ public class VoicemailContract { @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_SYNC_VOICEMAIL = "android.intent.action.SYNC_VOICEMAIL"; /** * 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: * * <ul> * <li><em>{@link #EXTRA_VOICEMAIL_SMS_TYPE}</em> - (String) The event type of the SMS. Common * values are "SYNC" or "STATUS"</li> * <li><em>{@link #EXTRA_VOICEMAIL_SMS_DATA}</em> - (Bundle) The fields sent by the SMS</li> * <li><em>{@link #EXTRA_VOICEMAIL_SMS_SUBID}</em> - (Integer) The subscription ID of the * phone account that received the SMS</li> * </ul> */ /** @hide */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_VOICEMAIL_SMS_RECEIVED = "android.intent.action.VOICEMAIL_SMS_RECEIVED"; /** * Extra included in {@link #ACTION_VOICEMAIL_SMS_RECEIVED} broadcast intents to indicate the * event type of the SMS. Common values are "SYNC" or "STATUS" */ /** @hide */ public static final String EXTRA_VOICEMAIL_SMS_PREFIX = "com.android.voicemail.extra.VOICEMAIL_SMS_PREFIX"; /** * Extra included in {@link #ACTION_VOICEMAIL_SMS_RECEIVED} broadcast intents to indicate the * fields sent by the SMS */ /** @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 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"; /** * Extra included in {@link Intent#ACTION_PROVIDER_CHANGED} broadcast intents to indicate if the * receiving package made this change. Loading
telephony/java/android/telephony/TelephonyManager.java +191 −1 Original line number Diff line number Diff line Loading @@ -720,6 +720,21 @@ public class TelephonyManager { */ public static final String VVM_TYPE_CVVM = "vvm_type_cvvm"; /* Visual voicemail SMS filter constants */ /** * The visual voicemail SMS message does not have to be a data SMS, and can be directed to any * port. * @hide */ public static final int VVM_SMS_FILTER_DESTINATION_PORT_ANY = -1; /** * The visual voicemail SMS message can be directed to any port, but must be a data SMS. * @hide */ public static final int VVM_SMS_FILTER_DESTINATION_PORT_DATA_SMS = -2; // // // Device Info Loading Loading @@ -2420,6 +2435,181 @@ public class TelephonyManager { return false; } /** * Enables or disables the visual voicemail SMS filter for a phone account. When the filter is * enabled, Incoming SMS messages matching the OMTP VVM SMS interface will be redirected to the * visual voicemail client with * {@link android.provider.VoicemailContract.ACTION_VOICEMAIL_SMS_RECEIVED}. * @see #setVisualVoicemailSmsFilterPrefix(int, String) * @see #setVisualVoicemailSmsFilterOriginatingNumbers(int, String[]) * @see #setVisualVoicemailSmsFilterDestinationPort(int, int) * * <p>This takes effect only when the caller is the default dialer. * * @param subId The subscription id of the phone account. * @param value The new state of the filter */ /** @hide */ public void setVisualVoicemailSmsFilterEnabled(int subId, boolean value){ try { ITelephony telephony = getITelephony(); if (telephony != null) telephony.setVisualVoicemailSmsFilterEnabled(subId, value); } catch (RemoteException ex) { } catch (NullPointerException ex) { } } /** * Returns whether the visual voicemail SMS filter is enabled for a phone account. * * @param packageName The visual voicemail client to read the settings from * @param subId The subscription id of the phone account. */ /** @hide */ public boolean isVisualVoicemailSmsFilterEnabled(String packageName, int subId){ try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.isVisualVoicemailSmsFilterEnabled(packageName, subId); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } return false; } /** * Sets the client prefix for the visual voicemail SMS filter of a phone account. The client * prefix will appear at the start of a visual voicemail SMS message, followed by a colon(:). * * <p>This takes effect only when the caller is the default dialer. * * @param subId The subscription id of the phone account. * @param prefix The client prefix */ /** @hide */ public void setVisualVoicemailSmsFilterClientPrefix(int subId, String prefix){ try { ITelephony telephony = getITelephony(); if (telephony != null) { telephony.setVisualVoicemailSmsFilterClientPrefix(subId, prefix); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } } /** * Returns the client prefix for the visual voicemail SMS filter of a phone account. The client * prefix will appear at the start of a visual voicemail SMS message, followed by a colon(:). * * @param packageName The visual voicemail client to read the settings from * @param subId The subscription id of the phone account. */ /** @hide */ public String getVisualVoicemailSmsFilterClientPrefix(String packageName, int subId){ try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.getVisualVoicemailSmsFilterClientPrefix(packageName, subId); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } return null; } /** * Sets the originating number whitelist for the visual voicemail SMS filter of a phone * account. If the list is not null only the SMS messages from a number in the list can be * considered as a visual voicemail SMS. Otherwise, messages from any address will be * considered. * * <p>This takes effect only when the caller is the default dialer. * * @param subId The subscription id of the phone account. * @param numbers A array representing the white list, or null to disable number filtering. */ /** @hide */ public void setVisualVoicemailSmsFilterOriginatingNumbers(int subId, @Nullable String[] numbers) { try { ITelephony telephony = getITelephony(); if (telephony != null) { telephony.setVisualVoicemailSmsFilterOriginatingNumbers(subId, numbers); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } } /** * Returns the originating number whitelist for the visual voicemail SMS filter of a phone * account. If the list is not null only the SMS messages from a number in the list can be * considered as a visual voicemail SMS. Otherwise, messages from any address will be * considered. * * @param packageName The visual voicemail client to read the settings from * @param subId The subscription id of the phone account. */ /** @hide */ public String[] getVisualVoicemailSmsFilterOriginatingNumbers(String packageName, int subId){ try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.getVisualVoicemailSmsFilterOriginatingNumbers(packageName, subId); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } return null; } /** * Sets the destination port for the visual voicemail SMS filter of a phone * account. * * <p>This takes effect only when the caller is the default dialer. * * @param subId The subscription id of the phone account. * @param port The destination port, or {@link #VVM_SMS_FILTER_DESTINATION_PORT_ANY}, or * {@link #VVM_SMS_FILTER_DESTINATION_PORT_DATA_SMS} */ /** @hide */ public void setVisualVoicemailSmsFilterDestinationPort(int subId, int port){ try { ITelephony telephony = getITelephony(); if (telephony != null) { telephony.setVisualVoicemailSmsFilterDestinationPort(subId, port); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } } /** * Returns the destination port for the visual voicemail SMS filter of a phone * account. * * @param packageName The visual voicemail client to read the settings from * @param subId The subscription id of the phone account. * @returns port The destination port, or {@link #VVM_SMS_FILTER_DESTINATION_PORT_ANY}, or * {@link #VVM_SMS_FILTER_DESTINATION_PORT_DATA_SMS} */ /** @hide */ public int getVisualVoicemailSmsFilterDestinationPort(String packageName, int subId){ try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.getVisualVoicemailSmsFilterDestinationPort(packageName, subId); } } catch (RemoteException ex) { } catch (NullPointerException ex) { } return VVM_SMS_FILTER_DESTINATION_PORT_ANY; } /** * Returns the voice mail count. Return 0 if unavailable, -1 if there are unread voice messages * but the count is unknown. Loading
telephony/java/com/android/internal/telephony/ITelephony.aidl +20 −0 Original line number Diff line number Diff line Loading @@ -450,6 +450,26 @@ interface ITelephony { */ int getVoiceMessageCountForSubscriber(int subId); // Not oneway, caller needs to make sure the vaule is set before receiving a SMS void setVisualVoicemailSmsFilterEnabled(int subId, boolean value); boolean isVisualVoicemailSmsFilterEnabled(String packageName, int subId); // Not oneway, caller needs to make sure the vaule is set before receiving a SMS void setVisualVoicemailSmsFilterClientPrefix(int subId, String prefix); String getVisualVoicemailSmsFilterClientPrefix(String packageName, int subId); // Not oneway, caller needs to make sure the vaule is set before receiving a SMS void setVisualVoicemailSmsFilterOriginatingNumbers(int subId, in String[] numbers); String[] getVisualVoicemailSmsFilterOriginatingNumbers(String packageName, int subId); // Not oneway, caller needs to make sure the vaule is set before receiving a SMS void setVisualVoicemailSmsFilterDestinationPort(int subId, int port); int getVisualVoicemailSmsFilterDestinationPort(String packageName, int subId); /** * Returns the network type for data transmission * Legacy call, permission-free Loading