summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuK1337 <priv.luk@gmail.com>2019-10-21 14:17:56 +0200
committerMichael Bestas <mkbestas@lineageos.org>2019-12-11 23:46:23 +0200
commit855f3f44c4a02613535ec8a0275f4c28d7c0d8ef (patch)
tree03c70a55a9096d971245f6caf3f649114609f119
parent8bccf219d0141ab0ad292aef07d82d06a82a9a23 (diff)
downloadandroid_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.java21
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);
}
}