From e3134c4a04600bb1c6e5dbcaeaf0762dcfedd378 Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Mon, 16 May 2022 14:36:19 +0800 Subject: [PATCH 1/2] [DO NOT MERGE] Fix Settings crash when setting a null ringtone Ringtone picker may callback a null ringtone Uri if users select None. This change pass null ringtone Uri to RingtoneManager and return. Bug: 232502532 Bug: 221041256 Test: maunal Settings - Sound & Vibration -> Phone ringtone -> My Sounds -> None Change-Id: I044b680871472a3c272f6264c4ef272df542112e Merged-In: I044b680871472a3c272f6264c4ef272df542112e --- src/com/android/settings/DefaultRingtonePreference.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/com/android/settings/DefaultRingtonePreference.java b/src/com/android/settings/DefaultRingtonePreference.java index 914c4b214d1..824a5a05dc1 100644 --- a/src/com/android/settings/DefaultRingtonePreference.java +++ b/src/com/android/settings/DefaultRingtonePreference.java @@ -46,6 +46,11 @@ public class DefaultRingtonePreference extends RingtonePreference { @Override protected void onSaveRingtone(Uri ringtoneUri) { + if (ringtoneUri == null) { + setActualDefaultRingtoneUri(ringtoneUri); + return; + } + String mimeType = getContext().getContentResolver().getType(ringtoneUri); if (mimeType == null) { Log.e(TAG, "onSaveRingtone for URI:" + ringtoneUri From 0eb3011fc2b7f66f1ccd50fbf45b691f4fedd2f4 Mon Sep 17 00:00:00 2001 From: Tsung-Mao Fang Date: Fri, 27 May 2022 15:52:30 +0800 Subject: [PATCH 2/2] [DO NOT MERGE] Fix can't change notification sound for work profile. Use correct user id context to query the type, so we won't get empty result unexpectedly. If we get the null result, then we won't set sound sucessfully. Bug: 233580016 Bug: 221041256 Test: Manual test and set work profile sound works. Change-Id: I7f8fb737a7c6f77a380f3f075a5c89a1970e39ad Merged-In: I7f8fb737a7c6f77a380f3f075a5c89a1970e39ad --- src/com/android/settings/DefaultRingtonePreference.java | 2 +- .../src/com/android/settings/DefaultRingtonePreferenceTest.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/DefaultRingtonePreference.java b/src/com/android/settings/DefaultRingtonePreference.java index 824a5a05dc1..9bf626c9898 100644 --- a/src/com/android/settings/DefaultRingtonePreference.java +++ b/src/com/android/settings/DefaultRingtonePreference.java @@ -51,7 +51,7 @@ public class DefaultRingtonePreference extends RingtonePreference { return; } - String mimeType = getContext().getContentResolver().getType(ringtoneUri); + String mimeType = mUserContext.getContentResolver().getType(ringtoneUri); if (mimeType == null) { Log.e(TAG, "onSaveRingtone for URI:" + ringtoneUri + " ignored: failure to find mimeType (no access from this context?)"); diff --git a/tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java b/tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java index b9dea0167b5..7877684dce6 100644 --- a/tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java +++ b/tests/unit/src/com/android/settings/DefaultRingtonePreferenceTest.java @@ -59,6 +59,7 @@ public class DefaultRingtonePreferenceTest { when(mDefaultRingtonePreference.getRingtoneType()) .thenReturn(RingtoneManager.TYPE_RINGTONE); mDefaultRingtonePreference.setUserId(1); + mDefaultRingtonePreference.mUserContext = context; } @Test