diff --git a/api/current.txt b/api/current.txt index ad77f1f5e76db..9706e2a72f123 100644 --- a/api/current.txt +++ b/api/current.txt @@ -33781,6 +33781,8 @@ package android.provider { public static final class VoicemailContract.Voicemails implements android.provider.BaseColumns android.provider.OpenableColumns { method public static android.net.Uri buildSourceUri(java.lang.String); + field public static final java.lang.String ARCHIVED = "archived"; + field public static final java.lang.String BACKED_UP = "backed_up"; field public static final android.net.Uri CONTENT_URI; field public static final java.lang.String DATE = "date"; field public static final java.lang.String DELETED = "deleted"; @@ -33788,6 +33790,7 @@ package android.provider { field public static final java.lang.String DIR_TYPE = "vnd.android.cursor.dir/voicemails"; field public static final java.lang.String DURATION = "duration"; field public static final java.lang.String HAS_CONTENT = "has_content"; + field public static final java.lang.String IS_OMTP_VOICEMAIL = "is_omtp_voicemail"; field public static final java.lang.String IS_READ = "is_read"; field public static final java.lang.String ITEM_TYPE = "vnd.android.cursor.item/voicemail"; field public static final java.lang.String LAST_MODIFIED = "last_modified"; @@ -33795,6 +33798,7 @@ package android.provider { field public static final java.lang.String NUMBER = "number"; field public static final java.lang.String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name"; field public static final java.lang.String PHONE_ACCOUNT_ID = "subscription_id"; + field public static final java.lang.String RESTORED = "restored"; field public static final java.lang.String SOURCE_DATA = "source_data"; field public static final java.lang.String SOURCE_PACKAGE = "source_package"; field public static final java.lang.String TRANSCRIPTION = "transcription"; @@ -38151,6 +38155,7 @@ package android.telephony { method public int getSimState(); method public int getSimState(int); method public java.lang.String getSubscriberId(); + method public java.lang.String getVisualVoicemailPackageName(android.telecom.PhoneAccountHandle); method public java.lang.String getVoiceMailAlphaTag(); method public java.lang.String getVoiceMailNumber(); method public int getVoiceNetworkType(); diff --git a/api/system-current.txt b/api/system-current.txt index fce33e5e705a4..d3651ff0b263a 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -36623,6 +36623,8 @@ package android.provider { public static final class VoicemailContract.Voicemails implements android.provider.BaseColumns android.provider.OpenableColumns { method public static android.net.Uri buildSourceUri(java.lang.String); + field public static final java.lang.String ARCHIVED = "archived"; + field public static final java.lang.String BACKED_UP = "backed_up"; field public static final android.net.Uri CONTENT_URI; field public static final java.lang.String DATE = "date"; field public static final java.lang.String DELETED = "deleted"; @@ -36630,6 +36632,7 @@ package android.provider { field public static final java.lang.String DIR_TYPE = "vnd.android.cursor.dir/voicemails"; field public static final java.lang.String DURATION = "duration"; field public static final java.lang.String HAS_CONTENT = "has_content"; + field public static final java.lang.String IS_OMTP_VOICEMAIL = "is_omtp_voicemail"; field public static final java.lang.String IS_READ = "is_read"; field public static final java.lang.String ITEM_TYPE = "vnd.android.cursor.item/voicemail"; field public static final java.lang.String LAST_MODIFIED = "last_modified"; @@ -36637,6 +36640,7 @@ package android.provider { field public static final java.lang.String NUMBER = "number"; field public static final java.lang.String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name"; field public static final java.lang.String PHONE_ACCOUNT_ID = "subscription_id"; + field public static final java.lang.String RESTORED = "restored"; field public static final java.lang.String SOURCE_DATA = "source_data"; field public static final java.lang.String SOURCE_PACKAGE = "source_package"; field public static final java.lang.String TRANSCRIPTION = "transcription"; @@ -41364,6 +41368,7 @@ package android.telephony { method public int getSimState(int); method public java.lang.String getSubscriberId(); method public java.util.List getTelephonyHistograms(); + method public java.lang.String getVisualVoicemailPackageName(android.telecom.PhoneAccountHandle); method public java.lang.String getVoiceMailAlphaTag(); method public java.lang.String getVoiceMailNumber(); method public int getVoiceNetworkType(); diff --git a/api/test-current.txt b/api/test-current.txt index 0cd5a852abcee..436b26729274f 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -33863,6 +33863,8 @@ package android.provider { public static final class VoicemailContract.Voicemails implements android.provider.BaseColumns android.provider.OpenableColumns { method public static android.net.Uri buildSourceUri(java.lang.String); + field public static final java.lang.String ARCHIVED = "archived"; + field public static final java.lang.String BACKED_UP = "backed_up"; field public static final android.net.Uri CONTENT_URI; field public static final java.lang.String DATE = "date"; field public static final java.lang.String DELETED = "deleted"; @@ -33870,6 +33872,7 @@ package android.provider { field public static final java.lang.String DIR_TYPE = "vnd.android.cursor.dir/voicemails"; field public static final java.lang.String DURATION = "duration"; field public static final java.lang.String HAS_CONTENT = "has_content"; + field public static final java.lang.String IS_OMTP_VOICEMAIL = "is_omtp_voicemail"; field public static final java.lang.String IS_READ = "is_read"; field public static final java.lang.String ITEM_TYPE = "vnd.android.cursor.item/voicemail"; field public static final java.lang.String LAST_MODIFIED = "last_modified"; @@ -33877,6 +33880,7 @@ package android.provider { field public static final java.lang.String NUMBER = "number"; field public static final java.lang.String PHONE_ACCOUNT_COMPONENT_NAME = "subscription_component_name"; field public static final java.lang.String PHONE_ACCOUNT_ID = "subscription_id"; + field public static final java.lang.String RESTORED = "restored"; field public static final java.lang.String SOURCE_DATA = "source_data"; field public static final java.lang.String SOURCE_PACKAGE = "source_package"; field public static final java.lang.String TRANSCRIPTION = "transcription"; @@ -38250,6 +38254,7 @@ package android.telephony { method public int getSimState(); method public int getSimState(int); method public java.lang.String getSubscriberId(); + method public java.lang.String getVisualVoicemailPackageName(android.telecom.PhoneAccountHandle); method public java.lang.String getVoiceMailAlphaTag(); method public java.lang.String getVoiceMailNumber(); method public int getVoiceNetworkType(); diff --git a/core/java/android/provider/VoicemailContract.java b/core/java/android/provider/VoicemailContract.java index e48a0d08de7de..a8b094eab0a2a 100644 --- a/core/java/android/provider/VoicemailContract.java +++ b/core/java/android/provider/VoicemailContract.java @@ -284,8 +284,6 @@ public class VoicemailContract { * not. * *

Type: INTEGER (boolean)

- * - * @hide */ public static final String BACKED_UP = "backed_up"; @@ -294,8 +292,6 @@ public class VoicemailContract { * restored, 0 if not. * *

Type: INTEGER (boolean)

- * - * @hide */ public static final String RESTORED = "restored"; @@ -305,19 +301,19 @@ public class VoicemailContract { * if not. * *

Type: INTEGER (boolean)

- * - * @hide */ public static final String ARCHIVED = "archived"; /** * Flag to indicate the voicemail is a OMTP voicemail handled by the {@link * android.telephony.VisualVoicemailService}. The UI should only show OMTP voicemails from - * the current visual voicemail package. + * the current visual voicemail package. For example, the selection could be + * {@code WHERE (IS_OMTP_VOICEMAIL == 0) OR ( IS_OMTP_VOICEMAIL == 1 AND SOURCE_PACKAGE == + * "current.vvm.package")} * *

Type: INTEGER (boolean)

* - * @hide + * @see android.telephony.TelephonyManager#getVisualVoicemailPackageName */ public static final String IS_OMTP_VOICEMAIL = "is_omtp_voicemail"; diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 5a848d956f5df..6e79a9c3ed801 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -2712,6 +2712,28 @@ public class TelephonyManager { return false; } + + /** + * Returns the package responsible of processing visual voicemail for the phone account. + * + *

Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE + * READ_PHONE_STATE} + */ + @Nullable + public String getVisualVoicemailPackageName(PhoneAccountHandle phoneAccountHandle) { + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + return telephony + .getVisualVoicemailPackageName(mContext.getOpPackageName(), + phoneAccountHandle); + } + } catch (RemoteException ex) { + } catch (NullPointerException ex) { + } + return null; + } + /** * Enables 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 diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 6de62de866f2e..454ab40ab66f3 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -504,6 +504,9 @@ interface ITelephony { boolean isVisualVoicemailEnabled(String callingPackage, in PhoneAccountHandle accountHandle); + String getVisualVoicemailPackageName(String callingPackage, + in PhoneAccountHandle phoneAccountHandle); + // Not oneway, caller needs to make sure the vaule is set before receiving a SMS void enableVisualVoicemailSmsFilter(String callingPackage, int subId, in VisualVoicemailSmsFilterSettings settings);