铃声选择器不工作
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。
我正在使用这个库 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。