diff options
author | LuK1337 <priv.luk@gmail.com> | 2019-10-21 14:17:56 +0200 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2019-12-11 23:46:23 +0200 |
commit | 855f3f44c4a02613535ec8a0275f4c28d7c0d8ef (patch) | |
tree | 03c70a55a9096d971245f6caf3f649114609f119 | |
parent | 8bccf219d0141ab0ad292aef07d82d06a82a9a23 (diff) | |
download | android_packages_providers_MediaProvider-staging/lineage-17.0_merge-android-10.0.0_r9.tar.gz android_packages_providers_MediaProvider-staging/lineage-17.0_merge-android-10.0.0_r9.tar.bz2 android_packages_providers_MediaProvider-staging/lineage-17.0_merge-android-10.0.0_r9.zip |
MediaProvider: Make sure to check the type when searching for soundsstaging/lineage-17.0_merge-android-10.0.0_r9
* When there are multiple sounds under different types
with same filenames there's a chance that a wrong
one would be selected as default. Making sure that
we check the type as well prevents that.
Change-Id: I9296a567db55dfea330940baad12b9a9f7dffaa0
-rw-r--r-- | src/com/android/providers/media/MediaService.java | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/com/android/providers/media/MediaService.java b/src/com/android/providers/media/MediaService.java index caf55230..26149c65 100644 --- a/src/com/android/providers/media/MediaService.java +++ b/src/com/android/providers/media/MediaService.java @@ -47,6 +47,8 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Collection; +import java.util.HashMap; +import java.util.Map; public class MediaService extends IntentService { public MediaService() { @@ -173,29 +175,30 @@ public class MediaService extends IntentService { * Ensure that we've set ringtones at least once after initial scan. */ private static void ensureDefaultRingtones(Context context) { - for (int type : new int[] { - TYPE_RINGTONE, - TYPE_NOTIFICATION, - TYPE_ALARM, - }) { + for (Map.Entry<Integer, String> type : new HashMap<Integer, String>() {{ + put(TYPE_RINGTONE, MediaStore.Audio.AudioColumns.IS_RINGTONE); + put(TYPE_NOTIFICATION, MediaStore.Audio.AudioColumns.IS_NOTIFICATION); + put(TYPE_ALARM, MediaStore.Audio.AudioColumns.IS_ALARM); + }}.entrySet()) { // Skip if we've already defined it at least once, so we don't // overwrite the user changing to null - final String setting = getDefaultRingtoneSetting(type); + final String setting = getDefaultRingtoneSetting(type.getKey()); if (Settings.System.getInt(context.getContentResolver(), setting, 0) != 0) { continue; } // Try finding the scanned ringtone - final String filename = getDefaultRingtoneFilename(type); + final String filename = getDefaultRingtoneFilename(type.getKey()); final Uri baseUri = MediaStore.Audio.Media.INTERNAL_CONTENT_URI; try (Cursor cursor = context.getContentResolver().query(baseUri, new String[] { MediaColumns._ID }, - MediaColumns.DISPLAY_NAME + "=?", + MediaColumns.DISPLAY_NAME + "=? AND " + type.getValue() + "=1", new String[] { filename }, null)) { if (cursor.moveToFirst()) { final Uri ringtoneUri = context.getContentResolver().canonicalizeOrElse( ContentUris.withAppendedId(baseUri, cursor.getLong(0))); - RingtoneManager.setActualDefaultRingtoneUri(context, type, ringtoneUri); + RingtoneManager.setActualDefaultRingtoneUri( + context, type.getKey(), ringtoneUri); Settings.System.putInt(context.getContentResolver(), setting, 1); } } |