我正在使用这个lib android.v4.preference.fragment,有关于铃声偏好的问题,以下代码对于ICS及以下版本的手机而言非常出色,但它为ICS及以上手机启动了重复的铃声对话,即它启动了2个铃声偏好对话框。
ringtonepref.setOnPreferenceClickListener(new OnPreferenceClickListener(){
@Override
public boolean onPreferenceClick(Preference arg0) {
// TODO Auto-generated method stub
{
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity());
String path = settings.getString("prefnotificationTone", "content://settings/system/notification_sound");
Uri uri = !TextUtils.isEmpty(path) ? Uri.parse(path) : null;
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
//intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALL);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, uri);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
getActivity().startActivityForResult(intent, 1000);
}
return true;
}
我在活动结果中这样处理
case 1000:
if (resultCode == Activity.RESULT_OK)
{
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = settings.edit();
editor.putString("prefnotificationTone", uri == null ? "": uri.toString());
editor.commit();
}
else
{
}
break;
我尝试了另一种比较设备的方法,即ICS及以上发布默认的其他允许自定义意图,但对于果冻豆和其他设备我没有把事件发送到OnPreferenceChangeListener
,现在我很困惑任何帮助。
由于