Android RingtonePreference 显示副标题 summary

有些小的技巧总是需要花时间去寻找,为了帮助大家节省寻找的时间,也帮自己做一个记忆,总结如下:

在软件的设置界面总是免不了要设置一些接受信息的铃声,这个时候就用到了RingtonePreference ,首先在onCreate()里面,输入如下代码:

mAccountRingtone.setSummary(getRingtonName(mAccount.getRingtone()));
        mAccountRingtone.setOnPreferenceChangeListener(new Reference.OnPreferenceChangeListener()
        {
        	public boolean onPreferenceChange(Preference preference,Object newValue)
        	{
        		mAccountRingtone.setSummary(getRingtonName(newValue.toString()));
        		SharedPreferences sp=mAccountRingtone.getPreferenceManager().getSharedPreferences();
        		sp.edit().putString(PREFERENCE_RINGTONE, newValue.toString()).commit();
        		return false;
        	}
        });

上面这段代码是说在监听到改变的时候,先把newValue显示到RingtonePreference 上面,然后保存到SharedPreferences里面,可能在有些地方还需要存到数据库里面,那大家就要问了,getRingtonName()这个方法是做什么的呢?其实newValue是一个Uri并不是铃声的名字,那么我们就需要通过这个Uri去查找数据库,来得到铃声的名字,下面是这个方法的实现:

public static final String DEFAULT="default";
	public String getRingtonName(String uri)
	{
		if(uri.equals(""));
		{
			return "";
		}
		else 
		{
			try
			{
				Uri mUri = Uri.parse(uri);
				Cursor c = getContentResolver().query(mUri, new String[]{MediaStore.Audio.Media.TITLE}, null, null, null);
				try
				{
					if(c.moveToFirst())
					{
						return c.getString(0);
					}
					else
					{
						return DEFAULT;
					}
					
				}
				finally
				{
					c.close();
				}
			}
			catch(Exception e)
			{
				return DEFAULT;
			}
		}
	}

ok!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值