问题:默认铃声识别不到URI路径。
原因:默认铃声的URI没有加后缀
在RingtoneManager中,使用的是.equals()来对比Ringtone的URI,获取Ringtone的位置。(默认铃声的URI没有加后缀,所以没有遍历到)
Uri uriFromCursor = getUriFromCursor(mContext, cursor); if (ringtoneUri.equals(uriFromCursor)) { return cursor.getPosition(); }
以前是使用Ringtone的id来比较,获取Ringtone的位置。(即使默认铃声的URI没有加后缀,也能遍历到)
final Cursor cursor = getCursor(); cursor.moveToPosition(-1); while (cursor.moveTonext()) { if (ringtoneId == cursor.getLong(ID_COLUMN_INDEX)) { return cursor.getPosition(); } }
解决方法:
使用canonicalize(uri)方法规范Ringtone的URI,给URI加上后缀
if (uri != null) { uri = mContext.getContentResolver().canonicalize(uri); }
如果遇到识别不到RingtoneURI的情况可以参考一下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)