Fix ringtone persistance after device rotation.
Bug: 26122624 Change-Id: I187fe673dea250e93c6e9603239f01845ed378a3
This commit is contained in:
@@ -49,8 +49,6 @@ public class RingtonePreference extends Preference {
|
|||||||
|
|
||||||
private static final String TAG = "RingtonePreference";
|
private static final String TAG = "RingtonePreference";
|
||||||
|
|
||||||
private static int sRequestCode = 100;
|
|
||||||
|
|
||||||
private int mRingtoneType;
|
private int mRingtoneType;
|
||||||
private boolean mShowDefault;
|
private boolean mShowDefault;
|
||||||
private boolean mShowSilent;
|
private boolean mShowSilent;
|
||||||
@@ -213,24 +211,18 @@ public class RingtonePreference extends Preference {
|
|||||||
}
|
}
|
||||||
protected void onAttachedToHierarchy(PreferenceManager preferenceManager) {
|
protected void onAttachedToHierarchy(PreferenceManager preferenceManager) {
|
||||||
super.onAttachedToHierarchy(preferenceManager);
|
super.onAttachedToHierarchy(preferenceManager);
|
||||||
|
|
||||||
mRequestCode = sRequestCode++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
|
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
if (requestCode == mRequestCode) {
|
if (data != null) {
|
||||||
if (data != null) {
|
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
|
||||||
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
|
|
||||||
|
|
||||||
if (callChangeListener(uri != null ? uri.toString() : "")) {
|
if (callChangeListener(uri != null ? uri.toString() : "")) {
|
||||||
onSaveRingtone(uri);
|
onSaveRingtone(uri);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -48,7 +48,9 @@ import android.provider.Settings;
|
|||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.Preference.OnPreferenceChangeListener;
|
import android.support.v7.preference.Preference.OnPreferenceChangeListener;
|
||||||
import android.support.v7.preference.TwoStatePreference;
|
import android.support.v7.preference.TwoStatePreference;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.internal.logging.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.RingtonePreference;
|
import com.android.settings.RingtonePreference;
|
||||||
@@ -83,6 +85,9 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab
|
|||||||
private static final String KEY_ZEN_MODE = "zen_mode";
|
private static final String KEY_ZEN_MODE = "zen_mode";
|
||||||
private static final String KEY_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings";
|
private static final String KEY_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings";
|
||||||
|
|
||||||
|
private static final String SELECTED_PREFERENCE_KEY = "selected_preference";
|
||||||
|
private static final int REQUEST_CODE = 200;
|
||||||
|
|
||||||
private static final String[] RESTRICTED_KEYS = {
|
private static final String[] RESTRICTED_KEYS = {
|
||||||
KEY_MEDIA_VOLUME,
|
KEY_MEDIA_VOLUME,
|
||||||
KEY_ALARM_VOLUME,
|
KEY_ALARM_VOLUME,
|
||||||
@@ -175,6 +180,13 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab
|
|||||||
initVibrateWhenRinging();
|
initVibrateWhenRinging();
|
||||||
updateRingerMode();
|
updateRingerMode();
|
||||||
updateEffectsSuppressor();
|
updateEffectsSuppressor();
|
||||||
|
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
String selectedPreference = savedInstanceState.getString(SELECTED_PREFERENCE_KEY, null);
|
||||||
|
if (!TextUtils.isEmpty(selectedPreference)) {
|
||||||
|
mRequestPreference = (RingtonePreference) findPreference(selectedPreference);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -226,7 +238,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab
|
|||||||
if (preference instanceof RingtonePreference) {
|
if (preference instanceof RingtonePreference) {
|
||||||
mRequestPreference = (RingtonePreference) preference;
|
mRequestPreference = (RingtonePreference) preference;
|
||||||
mRequestPreference.onPrepareRingtonePickerIntent(mRequestPreference.getIntent());
|
mRequestPreference.onPrepareRingtonePickerIntent(mRequestPreference.getIntent());
|
||||||
startActivityForResult(preference.getIntent(), mRequestPreference.getRequestCode());
|
startActivityForResult(preference.getIntent(), REQUEST_CODE);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.onPreferenceTreeClick(preference);
|
return super.onPreferenceTreeClick(preference);
|
||||||
@@ -240,6 +252,14 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSaveInstanceState(Bundle outState) {
|
||||||
|
super.onSaveInstanceState(outState);
|
||||||
|
if (mRequestPreference != null) {
|
||||||
|
outState.putString(SELECTED_PREFERENCE_KEY, mRequestPreference.getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// === Volumes ===
|
// === Volumes ===
|
||||||
|
|
||||||
private VolumeSeekBarPreference initVolumePreference(String key, int stream, int muteIcon) {
|
private VolumeSeekBarPreference initVolumePreference(String key, int stream, int muteIcon) {
|
||||||
|
Reference in New Issue
Block a user