mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
61 lines
2.6 KiB
Diff
61 lines
2.6 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Jean-Michel Trivi <jmtrivi@google.com>
|
||
|
Date: Wed, 7 Dec 2022 04:36:46 +0000
|
||
|
Subject: [PATCH] RingtoneManager: verify default ringtone is audio
|
||
|
|
||
|
When a ringtone picker tries to set a ringtone through
|
||
|
RingtoneManager.setActualDefaultRingtoneUri (also
|
||
|
called by com.android.settings.DefaultRingtonePreference),
|
||
|
verify the mimeType can be obtained (not found when caller
|
||
|
doesn't have access to it) and it is an audio resource.
|
||
|
|
||
|
Bug: 205837340
|
||
|
Test: atest android.media.audio.cts.RingtoneManagerTest
|
||
|
(cherry picked from commit 38618f9fb16d3b5617e2289354d47abe5af17dad)
|
||
|
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:377144b64325dadad102f5233ecb50a4446b205b)
|
||
|
Merged-In: I3f2c487ded405c0c1a83ef0a2fe99cff7cc9328e
|
||
|
Change-Id: I3f2c487ded405c0c1a83ef0a2fe99cff7cc9328e
|
||
|
---
|
||
|
media/java/android/media/RingtoneManager.java | 19 +++++++++++++++++--
|
||
|
1 file changed, 17 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/media/java/android/media/RingtoneManager.java b/media/java/android/media/RingtoneManager.java
|
||
|
index 3eb9d529b756..38f6deb34f18 100644
|
||
|
--- a/media/java/android/media/RingtoneManager.java
|
||
|
+++ b/media/java/android/media/RingtoneManager.java
|
||
|
@@ -822,10 +822,10 @@ public class RingtoneManager {
|
||
|
|
||
|
return ringtoneUri;
|
||
|
}
|
||
|
-
|
||
|
+
|
||
|
/**
|
||
|
* Sets the {@link Uri} of the default sound for a given sound type.
|
||
|
- *
|
||
|
+ *
|
||
|
* @param context A context used for querying.
|
||
|
* @param type The type whose default sound should be set. One of
|
||
|
* {@link #TYPE_RINGTONE}, {@link #TYPE_NOTIFICATION}, or
|
||
|
@@ -846,6 +846,21 @@ public class RingtoneManager {
|
||
|
if(!isInternalRingtoneUri(ringtoneUri)) {
|
||
|
ringtoneUri = ContentProvider.maybeAddUserId(ringtoneUri, context.getUserId());
|
||
|
}
|
||
|
+
|
||
|
+ if (ringtoneUri != null) {
|
||
|
+ final String mimeType = resolver.getType(ringtoneUri);
|
||
|
+ if (mimeType == null) {
|
||
|
+ Log.e(TAG, "setActualDefaultRingtoneUri for URI:" + ringtoneUri
|
||
|
+ + " ignored: failure to find mimeType (no access from this context?)");
|
||
|
+ return;
|
||
|
+ }
|
||
|
+ if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg"))) {
|
||
|
+ Log.e(TAG, "setActualDefaultRingtoneUri for URI:" + ringtoneUri
|
||
|
+ + " ignored: associated mimeType:" + mimeType + " is not an audio type");
|
||
|
+ return;
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
Settings.System.putStringForUser(resolver, setting,
|
||
|
ringtoneUri != null ? ringtoneUri.toString() : null, context.getUserId());
|
||
|
|