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

Commit 39af15e6 authored by Brad Ebinger's avatar Brad Ebinger
Browse files

Correctly play the ringtone set by secondary users

Correctly play the ringtone set by secondary users instead of always
playing the ringtone set by the primary user.

Bug: 18206079
Change-Id: If98701fc5e927d035d1bac5ee1b904f8964e80b5
parent adb4c33e
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -16,11 +16,14 @@

package com.android.server.telecom;

import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.media.AudioManager;
import android.media.RingtoneManager;
import android.media.Ringtone;
import android.net.Uri;
import android.os.UserHandle;
import android.provider.Settings;

import com.android.internal.annotations.VisibleForTesting;
@@ -39,11 +42,23 @@ public class RingtoneFactory {
    }

    public Ringtone getRingtone(Uri ringtoneUri) {
        UserHandle userHandle = UserHandle.of(ActivityManager.getCurrentUser());
        Context userContext = mContext;
        try {
            userContext = mContext.createPackageContextAsUser(mContext.getPackageName(), 0,
                    userHandle);

        } catch (PackageManager.NameNotFoundException e) {
            Log.w("RingtoneFactory", "Package name not found: " + e.getMessage());
        }
        if (ringtoneUri == null) {
            ringtoneUri = Settings.System.DEFAULT_RINGTONE_URI;
            String userRingtoneChoice = Settings.System.getStringForUser(
                    userContext.getContentResolver(), Settings.System.RINGTONE,
                    userHandle.getIdentifier());
            ringtoneUri = (userRingtoneChoice == null) ? null : Uri.parse(userRingtoneChoice);
        }

        Ringtone ringtone = RingtoneManager.getRingtone(mContext, ringtoneUri);
        Ringtone ringtone = RingtoneManager.getRingtone(userContext, ringtoneUri);
        if (ringtone != null) {
            ringtone.setStreamType(AudioManager.STREAM_RING);
        }