铃声选择器无法正常工作

时间:2015-01-15 18:45:49

标签: android android-preferences

我正在使用这个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,现在我很困惑任何帮助。

由于

1 个答案:

答案 0 :(得分:2)

这实际上是图书馆的工作流程错误,您可以找到here以外的解决方法。