diff options
| -rw-r--r-- | media/java/android/media/RingtoneManager.java | 10 |
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 |