在路径:\providers\MediaProvider\src\com\android\providers\media\MediaProvider.java
注意在insertFile和updateInternal方法里都要实现,因为在insertFile是初始化手机的时候调用,updateInternal是重启或者铃声列表发生变化的时候调用
代码我就不分析了,很简单,一看就明白
需要注意一点的是,不同平台不同Android系统的结构可能有点差异,比如boolean isRingtones = (isRingtone == null? false:(((int)isRingtone)==1));中isRingtone的类型在Android P上就是boolean型的,可以自己打log确认一下,再做调整。
//values.put("title_key", MediaStore.Audio.keyFor(so));
Object isRingtone = values.get("is_ringtone");
boolean isRingtones = (isRingtone == null? false:(((int)isRingtone)==1));
Object isNotification = values.get("is_notification");
boolean isNotifications = (isNotification == null? false:(((int)isNotification)==1));
Object isAlarm = values.get("is_alarm");
boolean isAlarms = (isAlarm == null? false:(((int)isAlarm)==1));
String sortTag = "\001";
if(isRingtones){
//TODO SET RINGTONE key_title
switch (so) {
case "lingsheng 1" :
values.put("title_key",sortTag + "A");
break;
case "lingsheng 2" :
values.put("title_key",sortTag + "B");
break;
case "lingsheng 3" :
values.put("title_key",sortTag + "C");
break;
case "lingsheng 5" :
values.put("title_key",sortTag + "D");
break;
case "lingsheng 6" :
values.put("title_key",sortTag + "E");
break;
default:
values.put("title_key", MediaStore.Audio.keyFor(so));
break;
}
}else if(isNotifications){
//TODO SET NOTIFICATION key_title
switch (so) {
case "Message 01" :
values.put("title_key",sortTag + "A");
break;
case "Message 02" :
values.put("title_key",sortTag + "B");
break;
case "Message 03" :
values.put("title_key",sortTag + "C");
break;
case "Message 04" :
values.put("title_key",sortTag + "D");
break;
default:
values.put("title_key", MediaStore.Audio.keyFor(so));
break;
}
}else if(isAlarms){
//TODO SET alarm key_title
switch (so) {
case "Alarm_Clock" :
values.put("title_key",sortTag + "A");
break;
default:
values.put("title_key", MediaStore.Audio.keyFor(so));
break;
}
}else {
values.put("title_key", MediaStore.Audio.keyFor(so));
}
// do a final trim of the title, in case it started with the special
// "sort first" character (ascii \001)
values.put("title", so.trim());