铃声选择器不工作

ringtone picker is not working

我正在使用这个库 android.v4.preference.fragment,铃声首选项有问题,下面的代码对 ICS 和以下版本的手机非常有效,但它会为 ICS 和更高版本的手机启动重复的铃声对话框,即它会启动2 个铃声首选项对话框。

ringtonepref.setOnPreferenceClickListener(新的 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;
}

我在 activity 结果中这样处理

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,现在我'我混淆了任何帮助。

谢谢

这实际上是库中的一个工作流程错误,您可以找到多种解决方法 here