Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5407d5c3 authored by James Lemieux's avatar James Lemieux
Browse files

Resolve default alarm ringtone URI when computing their title

Default URI that resolves to an internal URI should always be allowed.
e.g. "Default (Oxygen)"

Default URI that resolves to an external URI should only be allowed
if the user has granted the READ_EXTERNAL_STORAGE permission.
e.g. "Custom Ringtone" without perm; "Default (Some Name)" with perm

Bug: 22855800
Change-Id: Ibca0f2dd99bcf297a46d309b16665023cc4bc725
parent 32e2e044
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -24,8 +24,10 @@ import android.app.FragmentTransaction;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.media.RingtoneManager;
import android.net.Uri;
import android.net.Uri;
import android.os.Build;
import android.os.Build;
import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.annotation.VisibleForTesting;
import android.text.format.DateFormat;
import android.text.format.DateFormat;
import android.text.format.DateUtils;
import android.text.format.DateUtils;
@@ -128,6 +130,12 @@ public class AlarmUtils {
        final PackageManager pm = context.getPackageManager();
        final PackageManager pm = context.getPackageManager();
        final String packageName = context.getPackageName();
        final String packageName = context.getPackageName();


        // If the default alarm alert ringtone URI is given, resolve it to the actual URI.
        if (Settings.System.DEFAULT_ALARM_ALERT_URI.equals(ringtoneUri)) {
            ringtoneUri = RingtoneManager.getActualDefaultRingtoneUri(context,
                    RingtoneManager.TYPE_ALARM);
        }

        // If no ringtone is specified, return true.
        // If no ringtone is specified, return true.
        if (ringtoneUri == null || ringtoneUri == Alarm.NO_RINGTONE_URI) {
        if (ringtoneUri == null || ringtoneUri == Alarm.NO_RINGTONE_URI) {
            return true;
            return true;