Merge "Add self-managed connection service API."
diff --git a/src/com/android/server/telecom/Ringer.java b/src/com/android/server/telecom/Ringer.java
index a5bcca0..635d500 100644
--- a/src/com/android/server/telecom/Ringer.java
+++ b/src/com/android/server/telecom/Ringer.java
@@ -120,6 +120,11 @@
return false;
}
+ // Don't ring/acquire focus if there is no ringtone
+ if (mRingtoneFactory.getRingtone(foregroundCall) == null) {
+ isRingerAudible = false;
+ }
+
if (isRingerAudible) {
mRingingCall = foregroundCall;
Log.addEvent(foregroundCall, LogUtils.Events.START_RINGER);
diff --git a/src/com/android/server/telecom/RingtoneFactory.java b/src/com/android/server/telecom/RingtoneFactory.java
index 4bf731c..b14e1ab 100644
--- a/src/com/android/server/telecom/RingtoneFactory.java
+++ b/src/com/android/server/telecom/RingtoneFactory.java
@@ -67,9 +67,18 @@
if(ringtone == null) {
// Contact didn't specify ringtone or custom Ringtone creation failed. Get default
// ringtone for user or profile.
- ringtone = RingtoneManager.getRingtone(
- hasDefaultRingtoneForUser(userContext) ? userContext : mContext,
- Settings.System.DEFAULT_RINGTONE_URI);
+ Context contextToUse = hasDefaultRingtoneForUser(userContext) ? userContext : mContext;
+ Uri defaultRingtoneUri;
+ if (UserManager.get(contextToUse).isUserUnlocked(contextToUse.getUserId())) {
+ defaultRingtoneUri = RingtoneManager.getActualDefaultRingtoneUri(contextToUse,
+ RingtoneManager.TYPE_RINGTONE);
+ } else {
+ defaultRingtoneUri = Settings.System.DEFAULT_RINGTONE_URI;
+ }
+ if (defaultRingtoneUri == null) {
+ return null;
+ }
+ ringtone = RingtoneManager.getRingtone(contextToUse, defaultRingtoneUri);
}
if (ringtone != null) {
ringtone.setStreamType(AudioManager.STREAM_RING);
diff --git a/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java b/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
index 3b8e7e0..863c393 100644
--- a/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
+++ b/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
@@ -625,8 +625,10 @@
"different handle.");
return;
}
- if (info.contactDisplayPhotoUri == null) {
- // If there is no photo, just show the notification.
+ if (info == null ||
+ info.contactDisplayPhotoUri == null) {
+ // If there is no photo or if the caller info is
+ // null, just show the notification.
CallInfo callInfo = callInfoFactory.makeCallInfo(
info, null, handle, date);
showMissedCallNotification(callInfo, userHandle);