問題:默認鈴聲識別不到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的情況可以參考一下,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/396180.html
標籤:java
上一篇:Android大廠面試必問的Android Framework 如何學習,如何深入了解Framework層?
下一篇:Android 組件化從入門篇到大廠(微信、支付寶、愛奇藝、攜程、美團....)強化實戰篇,Android 進階必備
