Show RingtonePickerActivity in work user instead

Test: make RunSettingsRoboTests
Test: Try to import custom ringtone in work profile, no crash observed
Test: Set the custom ringtone as default. Tested both work gmail and
      calendar can play that ringtone.
Test: Try to import the peresonal ringtone, it is still working.

Bug: 37197930
Change-Id: I2b662247d7e70b59bae08e082e9682d74d797484
This commit is contained in:
Tony Mak
2017-04-11 20:07:39 +01:00
parent 44cfdcc9a7
commit 007dc1abe6
4 changed files with 42 additions and 29 deletions

View File

@@ -19,40 +19,15 @@ package com.android.settings;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.media.RingtoneManager;
import android.os.UserHandle;
import android.os.UserManager;
import android.net.Uri;
import android.util.AttributeSet;
import android.util.Log;
public class DefaultRingtonePreference extends RingtonePreference {
private static final String TAG = "DefaultRingtonePreference";
private int mUserId = UserHandle.USER_CURRENT;
protected Context mUserContext;
public DefaultRingtonePreference(Context context, AttributeSet attrs) {
super(context, attrs);
mUserContext = getContext();
}
public void setUserId(int userId) {
mUserId = userId;
mUserContext = Utils.createPackageContextAsUser(getContext(), mUserId);
}
@Override
public void performClick() {
if (mUserId != UserHandle.USER_CURRENT) {
if (Utils.confirmWorkProfileCredentialsIfNecessary(getContext(), mUserId) ||
Utils.startQuietModeDialogIfNecessary(getContext(),
UserManager.get(getContext()), mUserId)) {
return;
}
}
super.performClick();
}
@Override
@@ -64,9 +39,6 @@ public class DefaultRingtonePreference extends RingtonePreference {
* doesn't make sense to show a 'Default' item.
*/
ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false);
if (mUserId != UserHandle.USER_CURRENT) {
ringtonePickerIntent.putExtra(Intent.EXTRA_USER_ID, mUserId);
}
}
@Override