Skip to content

Commit c69f5be

Browse files
author
Wink Saville
committed
Add PhoneSubInfo.getCompleteVoiceMailNumber.
PhoneSubInfo.getVoiceMailNumber now returns only the network portion of the voicemail number. Use the new method PhoneSubInfo.getCompleteVoiceMailNumber to get the netowrk portion and the post dial portion. Bug: 2881483 Change-Id: I7637d4fa0ffa046b4eebc4d599719bb668c940b5
1 parent 9cd7979 commit c69f5be

File tree

5 files changed

+53
-3
lines changed

5 files changed

+53
-3
lines changed

telephony/java/android/telephony/PhoneNumberUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,9 @@ public static String getNumberFromIntent(Intent intent, Context context) {
135135
}
136136

137137
// TODO: We don't check for SecurityException here (requires
138-
// READ_PHONE_STATE permission).
138+
// CALL_PRIVILEGED permission).
139139
if (scheme.equals("voicemail")) {
140-
return TelephonyManager.getDefault().getVoiceMailNumber();
140+
return TelephonyManager.getDefault().getCompleteVoiceMailNumber();
141141
}
142142

143143
if (context == null) {

telephony/java/android/telephony/TelephonyManager.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,25 @@ public String getVoiceMailNumber() {
658658
}
659659
}
660660

661+
/**
662+
* Returns the complete voice mail number. Return null if it is unavailable.
663+
* <p>
664+
* Requires Permission:
665+
* {@link android.Manifest.permission#CALL_PRIVILEGED CALL_PRIVILEGED}
666+
*
667+
* @hide
668+
*/
669+
public String getCompleteVoiceMailNumber() {
670+
try {
671+
return getSubscriberInfo().getCompleteVoiceMailNumber();
672+
} catch (RemoteException ex) {
673+
return null;
674+
} catch (NullPointerException ex) {
675+
// This could happen before phone restarts due to crashing
676+
return null;
677+
}
678+
}
679+
661680
/**
662681
* Returns the voice mail count. Return 0 if unavailable.
663682
* <p>

telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ interface IPhoneSubInfo {
5858
*/
5959
String getVoiceMailNumber();
6060

61+
/**
62+
* Retrieves the complete voice mail number.
63+
*/
64+
String getCompleteVoiceMailNumber();
65+
6166
/**
6267
* Retrieves the alpha identifier associated with the voice mail number.
6368
*/

telephony/java/com/android/internal/telephony/PhoneSubInfo.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.content.Context;
2222
import android.content.pm.PackageManager;
2323
import android.os.Binder;
24+
import android.telephony.PhoneNumberUtils;
2425
import android.util.Log;
2526

2627
public class PhoneSubInfo extends IPhoneSubInfo.Stub {
@@ -29,6 +30,9 @@ public class PhoneSubInfo extends IPhoneSubInfo.Stub {
2930
private Context mContext;
3031
private static final String READ_PHONE_STATE =
3132
android.Manifest.permission.READ_PHONE_STATE;
33+
private static final String CALL_PRIVILEGED =
34+
// TODO Add core/res/AndriodManifest.xml#READ_PRIVILEGED_PHONE_STATE
35+
android.Manifest.permission.CALL_PRIVILEGED;
3236

3337
public PhoneSubInfo(Phone phone) {
3438
mPhone = phone;
@@ -101,7 +105,22 @@ public String getLine1AlphaTag() {
101105
*/
102106
public String getVoiceMailNumber() {
103107
mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, "Requires READ_PHONE_STATE");
104-
return (String) mPhone.getVoiceMailNumber();
108+
String number = PhoneNumberUtils.extractNetworkPortion(mPhone.getVoiceMailNumber());
109+
Log.d(LOG_TAG, "VM: PhoneSubInfo.getVoiceMailNUmber: "); // + number);
110+
return number;
111+
}
112+
113+
/**
114+
* Retrieves the compelete voice mail number.
115+
*
116+
* @hide
117+
*/
118+
public String getCompleteVoiceMailNumber() {
119+
mContext.enforceCallingOrSelfPermission(CALL_PRIVILEGED,
120+
"Requires CALL_PRIVILEGED");
121+
String number = mPhone.getVoiceMailNumber();
122+
Log.d(LOG_TAG, "VM: PhoneSubInfo.getCompleteVoiceMailNUmber: "); // + number);
123+
return number;
105124
}
106125

107126
/**

telephony/java/com/android/internal/telephony/PhoneSubInfoProxy.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,13 @@ public String getVoiceMailNumber() {
8181
return mPhoneSubInfo.getVoiceMailNumber();
8282
}
8383

84+
/**
85+
* Retrieves the complete voice mail number.
86+
*/
87+
public String getCompleteVoiceMailNumber() {
88+
return mPhoneSubInfo.getCompleteVoiceMailNumber();
89+
}
90+
8491
/**
8592
* Retrieves the alpha identifier associated with the voice mail number.
8693
*/

0 commit comments

Comments
 (0)