Merge "Rewriting phone constants for mainline"
diff --git a/apex/Android.bp b/apex/Android.bp
index 16bcb72..a7137d9 100644
--- a/apex/Android.bp
+++ b/apex/Android.bp
@@ -14,7 +14,7 @@
apex {
name: "com.android.telephony",
manifest: "apex_manifest.json",
- apps: ["StkLib"],
+ //apps: ["StkLib"],
defaults:["com.android.telephony-defaults"],
}
@@ -30,4 +30,4 @@
// This will use com.android.telephony.x509.pem (the cert) and
// com.android.telephony.pk8 (the private key)
certificate: "com.android.telephony",
-}
\ No newline at end of file
+}
diff --git a/sip/src/com/android/services/telephony/sip/SipIncomingCallReceiver.java b/sip/src/com/android/services/telephony/sip/SipIncomingCallReceiver.java
index 3212c00..2dbd707 100644
--- a/sip/src/com/android/services/telephony/sip/SipIncomingCallReceiver.java
+++ b/sip/src/com/android/services/telephony/sip/SipIncomingCallReceiver.java
@@ -84,7 +84,7 @@
}
private boolean isRunningInSystemUser() {
- return UserHandle.myUserId() == UserHandle.USER_SYSTEM;
+ return UserHandle.myUserId() == UserHandle.SYSTEM.getIdentifier();
}
private static void log(String msg) {
diff --git a/src/com/android/phone/CallNotifier.java b/src/com/android/phone/CallNotifier.java
index f9938ce..23a9649 100644
--- a/src/com/android/phone/CallNotifier.java
+++ b/src/com/android/phone/CallNotifier.java
@@ -21,6 +21,7 @@
import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.media.AudioManager;
+import android.media.AudioSystem;
import android.media.ToneGenerator;
import android.os.AsyncResult;
import android.os.Handler;
@@ -392,10 +393,10 @@
try {
int stream;
if (mBluetoothHeadset != null) {
- stream = isBluetoothAudioOn() ? AudioManager.STREAM_BLUETOOTH_SCO :
- AudioManager.STREAM_VOICE_CALL;
+ stream = isBluetoothAudioOn() ? AudioSystem.STREAM_BLUETOOTH_SCO :
+ AudioSystem.STREAM_VOICE_CALL;
} else {
- stream = AudioManager.STREAM_VOICE_CALL;
+ stream = AudioSystem.STREAM_VOICE_CALL;
}
toneGenerator = new ToneGenerator(stream, toneVolume);
// if (DBG) log("- created toneGenerator: " + toneGenerator);
diff --git a/src/com/android/phone/EmergencyActionGroup.java b/src/com/android/phone/EmergencyActionGroup.java
index 53ec1eb..4961a69 100644
--- a/src/com/android/phone/EmergencyActionGroup.java
+++ b/src/com/android/phone/EmergencyActionGroup.java
@@ -159,7 +159,7 @@
if (v.getId() == R.id.action1 || v.getId() == R.id.action2 || v.getId() == R.id.action3) {
AccessibilityManager accessibilityMgr =
- (AccessibilityManager) mContext.getSystemService(
+ (AccessibilityManager) getContext().getSystemService(
Context.ACCESSIBILITY_SERVICE);
if (accessibilityMgr.isTouchExplorationEnabled()) {
getContext().startActivity(intent);
diff --git a/src/com/android/phone/EmergencyDialer.java b/src/com/android/phone/EmergencyDialer.java
index 119c71b..334442f 100644
--- a/src/com/android/phone/EmergencyDialer.java
+++ b/src/com/android/phone/EmergencyDialer.java
@@ -720,8 +720,12 @@
isEmergencyNumber = true;
phoneToMakeCall = mShortcutViewConfig.getPhoneInfo();
} else {
- isEmergencyNumber = getSystemService(TelephonyManager.class)
- .isEmergencyNumber(mLastNumber);
+ try {
+ isEmergencyNumber = getSystemService(TelephonyManager.class)
+ .isEmergencyNumber(mLastNumber);
+ } catch (IllegalStateException ise) {
+ isEmergencyNumber = false;
+ }
}
if (isEmergencyNumber) {
diff --git a/src/com/android/phone/EmergencyInfoGroup.java b/src/com/android/phone/EmergencyInfoGroup.java
index f5aca7f..a62edfd 100644
--- a/src/com/android/phone/EmergencyInfoGroup.java
+++ b/src/com/android/phone/EmergencyInfoGroup.java
@@ -209,7 +209,7 @@
public void onClick(View view) {
if (view.getId() == R.id.emergency_info_view) {
AccessibilityManager accessibilityMgr =
- (AccessibilityManager) mContext.getSystemService(
+ (AccessibilityManager) getContext().getSystemService(
Context.ACCESSIBILITY_SERVICE);
if (accessibilityMgr.isTouchExplorationEnabled()) {
if (mOnConfirmClickListener != null) {
diff --git a/src/com/android/phone/EmergencyShortcutButton.java b/src/com/android/phone/EmergencyShortcutButton.java
index d147ce4..bfa956c 100644
--- a/src/com/android/phone/EmergencyShortcutButton.java
+++ b/src/com/android/phone/EmergencyShortcutButton.java
@@ -184,7 +184,7 @@
public void onClick(View view) {
if (view.getId() == R.id.emergency_call_number_info_view) {
AccessibilityManager accessibilityMgr =
- (AccessibilityManager) mContext.getSystemService(
+ (AccessibilityManager) getContext().getSystemService(
Context.ACCESSIBILITY_SERVICE);
if (accessibilityMgr.isTouchExplorationEnabled()) {
// TalkBack itself includes a prompt to confirm click action implicitly,
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 009ea43..13c5c61 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -117,7 +117,6 @@
import android.util.ArraySet;
import android.util.Log;
import android.util.Pair;
-import android.util.Slog;
import com.android.ims.ImsManager;
import com.android.ims.internal.IImsServiceFeatureCallback;
@@ -3172,21 +3171,6 @@
}
@Override
- public PhoneCapability getPhoneCapability(int subId, String callingPackage,
- String callingFeatureId) {
- if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(
- mApp, subId, callingPackage, callingFeatureId, "getPhoneCapability")) {
- return null;
- }
- final long identity = Binder.clearCallingIdentity();
- try {
- return mPhoneConfigurationManager.getStaticPhoneCapability();
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
public boolean isInEmergencySmsMode() {
enforceReadPrivilegedPermission("isInEmergencySmsMode");
final long identity = Binder.clearCallingIdentity();
@@ -5825,7 +5809,7 @@
PackageManager.MATCH_DISABLED_COMPONENTS
| PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
| PackageManager.GET_SIGNING_CERTIFICATES,
- UserHandle.USER_SYSTEM);
+ UserHandle.SYSTEM.getIdentifier());
}
for (int p = packages.size() - 1; p >= 0; p--) {
PackageInfo pkgInfo = packages.get(p);
@@ -5888,7 +5872,7 @@
final String subscriberId = phone.getSubscriberId();
if (DBG_MERGE) {
- Slog.d(LOG_TAG, "Setting line number for ICC=" + iccId + ", subscriberId="
+ Rlog.d(LOG_TAG, "Setting line number for ICC=" + iccId + ", subscriberId="
+ subscriberId + " to " + number);
}
@@ -6014,7 +5998,7 @@
final String numberKey = PREF_CARRIERS_NUMBER_PREFIX + iccId;
mergeNumber = (String) prefs.get(numberKey);
if (DBG_MERGE) {
- Slog.d(LOG_TAG, "Found line number " + mergeNumber
+ Rlog.d(LOG_TAG, "Found line number " + mergeNumber
+ " for active subscriber " + subscriberId);
}
if (!TextUtils.isEmpty(mergeNumber)) {
@@ -6048,7 +6032,7 @@
final String[] resultArray = result.toArray(new String[result.size()]);
Arrays.sort(resultArray);
if (DBG_MERGE) {
- Slog.d(LOG_TAG,
+ Rlog.d(LOG_TAG,
"Found subscribers " + Arrays.toString(resultArray) + " after merge");
}
return resultArray;
@@ -7973,7 +7957,7 @@
loge("isMultiSimSupportedInternal: no static configuration available");
return TelephonyManager.MULTISIM_NOT_SUPPORTED_BY_HARDWARE;
}
- if (staticCapability.getLogicalModemUuids().size() < 2) {
+ if (staticCapability.logicalModemList.size() < 2) {
loge("isMultiSimSupportedInternal: maximum number of modem is < 2");
return TelephonyManager.MULTISIM_NOT_SUPPORTED_BY_HARDWARE;
}
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index fd9de4f..004a699 100755
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -117,6 +117,9 @@
private static final int MSG_REDIAL_CONNECTION_CHANGED = 20;
private static final int MSG_REJECT = 21;
+ private static final String JAPAN_COUNTRY_CODE_WITH_PLUS_SIGN = "+81";
+ private static final String JAPAN_ISO_COUNTRY_CODE = "JP";
+
private List<Uri> mParticipants;
private boolean mIsAdhocConferenceCall;
@@ -1300,6 +1303,9 @@
if (isShowingOriginalDialString()
&& mOriginalConnection.getOrigDialString() != null) {
address = getAddressFromNumber(mOriginalConnection.getOrigDialString());
+ } else if (isNeededToFormatIncomingNumberForJp()) {
+ address = getAddressFromNumber(
+ formatIncomingNumberForJp(mOriginalConnection.getAddress()));
} else {
address = getAddressFromNumber(mOriginalConnection.getAddress());
}
@@ -3203,4 +3209,29 @@
listener.onStatusHintsChanged(this, statusHints);
}
}
+
+ /**
+ * Whether the incoming call number should be formatted to national number for Japan.
+ * @return {@code true} should be convert to the national format, {@code false} otherwise.
+ */
+ private boolean isNeededToFormatIncomingNumberForJp() {
+ if (mOriginalConnection.isIncoming()
+ && !TextUtils.isEmpty(mOriginalConnection.getAddress())
+ && mOriginalConnection.getAddress().startsWith(JAPAN_COUNTRY_CODE_WITH_PLUS_SIGN)) {
+ PersistableBundle b = getCarrierConfig();
+ return b != null && b.getBoolean(
+ CarrierConfigManager.KEY_FORMAT_INCOMING_NUMBER_TO_NATIONAL_FOR_JP_BOOL);
+ }
+ return false;
+ }
+
+ /**
+ * Format the incoming call number to national number for Japan.
+ * @param number
+ * @return the formatted phone number (e.g, "+819012345678" -> "09012345678")
+ */
+ private String formatIncomingNumberForJp(String number) {
+ return PhoneNumberUtils.stripSeparators(
+ PhoneNumberUtils.formatNumber(number, JAPAN_ISO_COUNTRY_CODE));
+ }
}
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index 136db59..854d935 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -71,6 +71,7 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -246,12 +247,20 @@
@Override
public boolean isCurrentEmergencyNumber(String number) {
- return mTelephonyManager.isEmergencyNumber(number);
+ try {
+ return mTelephonyManager.isEmergencyNumber(number);
+ } catch (IllegalStateException ise) {
+ return false;
+ }
}
@Override
public Map<Integer, List<EmergencyNumber>> getCurrentEmergencyNumberList() {
- return mTelephonyManager.getEmergencyNumberList();
+ try {
+ return mTelephonyManager.getEmergencyNumberList();
+ } catch (IllegalStateException ise) {
+ return new HashMap<>();
+ }
}
}
@@ -1167,11 +1176,26 @@
Call call = phone.getRingingCall();
if (!call.getState().isRinging()) {
Log.i(this, "onCreateIncomingConnection, no ringing call");
- return Connection.createFailedConnection(
+ Connection connection = Connection.createFailedConnection(
mDisconnectCauseFactory.toTelecomDisconnectCause(
android.telephony.DisconnectCause.INCOMING_MISSED,
"Found no ringing call",
phone.getPhoneId()));
+ Bundle extras = request.getExtras();
+
+ long time = extras.getLong(TelecomManager.EXTRA_CALL_CREATED_EPOCH_TIME_MILLIS);
+ if (time != 0) {
+ Log.i(this, "onCreateIncomingConnection. Set connect time info.");
+ connection.setConnectTimeMillis(time);
+ }
+
+ Uri address = extras.getParcelable(TelecomManager.EXTRA_INCOMING_CALL_ADDRESS);
+ if (address != null) {
+ Log.i(this, "onCreateIncomingConnection. Set caller id info.");
+ connection.setAddress(address, TelecomManager.PRESENTATION_ALLOWED);
+ }
+
+ return connection;
}
com.android.internal.telephony.Connection originalConnection =
@@ -1783,7 +1807,7 @@
if (!isAdhocConference) {
// Listen to Telephony specific callbacks from the connection
returnConnection.addTelephonyConnectionListener(mTelephonyConnectionListener);
- }
+ }
returnConnection.setVideoPauseSupported(
TelecomAccountRegistry.getInstance(this).isVideoPauseSupported(
phoneAccountHandle));