summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media/java/android/media/RingtoneManager.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/media/java/android/media/RingtoneManager.java b/media/java/android/media/RingtoneManager.java
index 664765a89a3a..932695c5a694 100644
--- a/media/java/android/media/RingtoneManager.java
+++ b/media/java/android/media/RingtoneManager.java
@@ -727,7 +727,9 @@ public class RingtoneManager {
String setting = getSettingForType(type);
if (setting == null) return;
- ringtoneUri = ContentProvider.maybeAddUserId(ringtoneUri, context.getUserId());
+ if(!isInternalRingtoneUri(ringtoneUri)) {
+ ringtoneUri = ContentProvider.maybeAddUserId(ringtoneUri, context.getUserId());
+ }
Settings.System.putStringForUser(resolver, setting,
ringtoneUri != null ? ringtoneUri.toString() : null, context.getUserId());
@@ -744,6 +746,12 @@ public class RingtoneManager {
}
}
+ private static boolean isInternalRingtoneUri(Uri uri) {
+ Uri uriWithoutUserId = ContentProvider.getUriWithoutUserId(uri);
+ return uriWithoutUserId == null ? false : uriWithoutUserId.toString()
+ .startsWith(MediaStore.Audio.Media.INTERNAL_CONTENT_URI.toString());
+ }
+
/**
* Try opening the given ringtone locally first, but failover to
* {@link IRingtonePlayer} if we can't access it directly. Typically happens