From ebd3aa0bb80d6d0af6f76e3487d0c3f1d7d00cd7 Mon Sep 17 00:00:00 2001 From: Ta-wei Yen Date: Tue, 24 Jan 2017 18:23:00 -0800 Subject: [PATCH] Add APIs to hide voicemail settings. With unbundle visual voicemail and dialer voicemail notification, the dialer should be able to control the voicemail settings, and refer telephony settings as "Advance settings" only showing the options not in the public API. This CL gives the default dialer the ability to hide duplicated settings in telephony. Bug: 34691905 Fixes 34691905 Test: CTS verifier test "hide public settings in voicemail" "hide voicemail in call settings" Change-Id: I6589c3d77b5075265cf013ee56524a342904ecd1 --- api/current.txt | 2 ++ api/system-current.txt | 2 ++ api/test-current.txt | 2 ++ .../android/telephony/TelephonyManager.java | 33 +++++++++++++++++++ 4 files changed, 39 insertions(+) diff --git a/api/current.txt b/api/current.txt index 16cfff2d84b86..ffd21b2902fa2 100644 --- a/api/current.txt +++ b/api/current.txt @@ -38683,6 +38683,7 @@ package android.telephony { field public static final int DATA_DISCONNECTED = 0; // 0x0 field public static final int DATA_SUSPENDED = 3; // 0x3 field public static final java.lang.String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT"; + field public static final java.lang.String EXTRA_HIDE_PUBLIC_SETTINGS = "android.telephony.extra.HIDE_PUBLIC_SETTINGS"; field public static final java.lang.String EXTRA_INCOMING_NUMBER = "incoming_number"; field public static final java.lang.String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT"; field public static final java.lang.String EXTRA_NOTIFICATION_COUNT = "android.telephony.extra.NOTIFICATION_COUNT"; @@ -38691,6 +38692,7 @@ package android.telephony { field public static final java.lang.String EXTRA_STATE_OFFHOOK; field public static final java.lang.String EXTRA_STATE_RINGING; field public static final java.lang.String EXTRA_VOICEMAIL_NUMBER = "android.telephony.extra.VOICEMAIL_NUMBER"; + field public static final java.lang.String METADATA_HIDE_VOICEMAIL_SETTINGS_MENU = "android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU"; field public static final int NETWORK_TYPE_1xRTT = 7; // 0x7 field public static final int NETWORK_TYPE_CDMA = 4; // 0x4 field public static final int NETWORK_TYPE_EDGE = 2; // 0x2 diff --git a/api/system-current.txt b/api/system-current.txt index 066f9ce6366ed..8cea65245c255 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -42029,6 +42029,7 @@ package android.telephony { field public static final int DATA_DISCONNECTED = 0; // 0x0 field public static final int DATA_SUSPENDED = 3; // 0x3 field public static final java.lang.String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT"; + field public static final java.lang.String EXTRA_HIDE_PUBLIC_SETTINGS = "android.telephony.extra.HIDE_PUBLIC_SETTINGS"; field public static final java.lang.String EXTRA_INCOMING_NUMBER = "incoming_number"; field public static final java.lang.String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT"; field public static final java.lang.String EXTRA_NOTIFICATION_COUNT = "android.telephony.extra.NOTIFICATION_COUNT"; @@ -42037,6 +42038,7 @@ package android.telephony { field public static final java.lang.String EXTRA_STATE_OFFHOOK; field public static final java.lang.String EXTRA_STATE_RINGING; field public static final java.lang.String EXTRA_VOICEMAIL_NUMBER = "android.telephony.extra.VOICEMAIL_NUMBER"; + field public static final java.lang.String METADATA_HIDE_VOICEMAIL_SETTINGS_MENU = "android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU"; field public static final int NETWORK_TYPE_1xRTT = 7; // 0x7 field public static final int NETWORK_TYPE_CDMA = 4; // 0x4 field public static final int NETWORK_TYPE_EDGE = 2; // 0x2 diff --git a/api/test-current.txt b/api/test-current.txt index f0c628ceadac0..7fb9896f2255e 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -38804,6 +38804,7 @@ package android.telephony { field public static final int DATA_DISCONNECTED = 0; // 0x0 field public static final int DATA_SUSPENDED = 3; // 0x3 field public static final java.lang.String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT"; + field public static final java.lang.String EXTRA_HIDE_PUBLIC_SETTINGS = "android.telephony.extra.HIDE_PUBLIC_SETTINGS"; field public static final java.lang.String EXTRA_INCOMING_NUMBER = "incoming_number"; field public static final java.lang.String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT"; field public static final java.lang.String EXTRA_NOTIFICATION_COUNT = "android.telephony.extra.NOTIFICATION_COUNT"; @@ -38812,6 +38813,7 @@ package android.telephony { field public static final java.lang.String EXTRA_STATE_OFFHOOK; field public static final java.lang.String EXTRA_STATE_RINGING; field public static final java.lang.String EXTRA_VOICEMAIL_NUMBER = "android.telephony.extra.VOICEMAIL_NUMBER"; + field public static final java.lang.String METADATA_HIDE_VOICEMAIL_SETTINGS_MENU = "android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU"; field public static final int NETWORK_TYPE_1xRTT = 7; // 0x7 field public static final int NETWORK_TYPE_CDMA = 4; // 0x4 field public static final int NETWORK_TYPE_EDGE = 2; // 0x2 diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index b28627bf3f74b..33e9b1653cdcb 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -372,13 +372,46 @@ public class TelephonyManager { public static final String ACTION_EMERGENCY_ASSISTANCE = "android.telephony.action.EMERGENCY_ASSISTANCE"; + /** + * A boolean meta-data value indicating whether the voicemail settings should be hidden in the + * call settings page launched by + * {@link android.telecom.TelecomManager#ACTION_SHOW_CALL_SETTINGS}. + * Dialer implementations (see {@link android.telecom.TelecomManager#getDefaultDialerPackage()}) + * which would also like to manage voicemail settings should set this meta-data to {@code true} + * in the manifest registration of their application. + * + * @see android.telecom.TelecomManager#ACTION_SHOW_CALL_SETTINGS + * @see #ACTION_CONFIGURE_VOICEMAIL + * @see #EXTRA_HIDE_PUBLIC_SETTINGS + */ + public static final String METADATA_HIDE_VOICEMAIL_SETTINGS_MENU = + "android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU"; + /** * Open the voicemail settings activity to make changes to voicemail configuration. + * + *

+ * The {@link #EXTRA_HIDE_PUBLIC_SETTINGS} hides settings the dialer will modify through public + * API if set. + * + * @see #EXTRA_HIDE_PUBLIC_SETTINGS */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_CONFIGURE_VOICEMAIL = "android.telephony.action.CONFIGURE_VOICEMAIL"; + /** + * The boolean value indicating whether the voicemail settings activity launched by {@link + * #ACTION_CONFIGURE_VOICEMAIL} should hide settings accessible through public API. This is + * used by dialer implementations which provides their own voicemail settings UI, but still + * needs to expose device specific voicemail settings to the user. + * + * @see #ACTION_CONFIGURE_VOICEMAIL + * @see #METADATA_HIDE_VOICEMAIL_SETTINGS_MENU + */ + public static final String EXTRA_HIDE_PUBLIC_SETTINGS = + "android.telephony.extra.HIDE_PUBLIC_SETTINGS"; + /** * @hide */