Merge "Add visual voicemail SMS filter APIs" into nyc-mr1-dev

This commit is contained in:
Ta-wei Yen
2016-05-16 20:36:36 +00:00
committed by Android (Google) Code Review
3 changed files with 252 additions and 1 deletions

View File

@@ -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.

View File

@@ -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
@@ -1879,7 +1894,7 @@ public class TelephonyManager {
return getSimOperatorNumericForPhone(phoneId);
}
/**
/**
* Returns the MCC+MNC (mobile country code + mobile network code) of the
* provider of the SIM for a particular subscription. 5 or 6 decimal digits.
* <p>
@@ -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.

View File

@@ -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