Por diversión, escribí un script muy sencillo para averiguar qué tono de llamada está asignado a un contacto concreto. Lamentablemente, el script necesita acceso Root y Busybox y sus applets instalado y disponible en la variable PATH . Una vez cumplidos los requisitos anteriores, guarde el siguiente texto preformateado en un archivo llamado find_tone.sh en /sdcard .
#!/system/bin/sh
list="/data/media/0/list";
mkfifo $list;
content query --uri content://com.android.contacts/raw\_contacts --projection display\_name:custom\_ringtone | sed -e /NULL/d -e 's/,\\scustom/\\ custom/g' -e 's/.\*display/Contact/g' > $list &
while read line; do
name=$(echo "$line" | awk -F 'custom\_ringtone=' '{print$1}');
content\_path=$(echo "$line" | awk -F 'custom\_ringtone=' '{print$2}');
printf "$name\\n";
content query --uri "$content\_path" --projection title | sed 's/.\*title/Ringtone/g';
printf "\\n";
done < $list
rm $list;
Todo lo que estoy haciendo en ese script es:
- Creación de un tubo con nombre en /datos/medios/0/
- Obtención de los valores disponibles en la columna nombre_de_la_pantalla y custom_ringtone a partir de la información en bruto de todos los contactos utilizando contenido herramienta, filtrando algunas cosas usando sed y guardar la salida en la tubería nombrada.
- Hacer que cada línea de la salida guardada pase por un bucle para separar el nombre del contacto de la línea y utilizar el resto de la línea para obtener la etiqueta del tono de llamada.
- Por fin, borrar la tubería nombrada.
Ejecute el archivo en una aplicación de emulador de terminal:
su -c 'sh FILE' # replace FILE with path of find\_tone.sh. If it was saved into /sdcard, FILE would be /sdcard/find\_tone.sh.
Aquí está el archivo en acción:
(Haga clic en la imagen para ampliarla)
Nota:
- La salida consistiría únicamente en los contactos a los que se les ha asignado un tono de llamada concreto. Todos los contactos que utilicen el tono de llamada por defecto no aparecerán en la salida.
- La solución está probada en Cyanogen OS 12 (Android 5.0.2).