Comment obtenir le nom de la sonnerie dans Android?

J’autorise mon utilisateur à choisir une sonnerie pour les notifications dans mon application. Je veux stocker l’URI du son avec le titre lisible par l’homme du son.

Jusqu’à présent, le code URI fonctionne très bien:

Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); 

Mais quand j’essaie d’obtenir le titre et de le définir comme un texte de bouton, je ne reçois rien. Semble n’avoir aucun titre?

 Ssortingng title = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_TITLE); button.setText(title); 

Mais le texte de mon bouton est vide. Si je fais:

 button.setText(uri.toSsortingng()); 

alors je vois l’uri parfaitement. Devrais-je juste essayer d’obtenir le titre de l’URI? Merci

Cela devrait l’obtenir:

 Ringtone ringtone = RingtoneManager.getRingtone(this, uri); Ssortingng title = ringtone.getTitle(this); 

Reportez-vous à http://developer.android.com/reference/android/media/Ringtone.html pour la documentation, mais l’histoire courte: Ringtone.getTitle (Context ctx);

Personnellement, j’ai eu un grave problème de performances lorsque j’ai essayé la réponse acceptée, il a fallu environ 2 secondes pour charger une liste de 30 sonneries. Je l’ai un peu changé et ça marche environ 10 fois plus vite:

 uri = ringtoneMgr.getRingtoneUri(cursor.getPosition()); ContentResolver cr = getContext().getContentResolver(); Ssortingng[] projection = {MediaStore.MediaColumns.TITLE}; Ssortingng title; Cursor cur = cr.query(uri, projection, null, null, null); if (cur != null) { if (cur.moveToFirst()) { title = cur.getSsortingng(0); cur.close(); 

J’ai eu des problèmes avec “MediaPlayer finalisé sans être publié”. J’utilise ceci:

 Cursor returnCursor = getContentResolver().query(uri, null, null, null, null); returnCursor.moveToFirst(); Ssortingng title = returnCursor.getSsortingng(returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); returnCursor.close(); 

Consultez la page https://developer.android.com/training/secure-file-sharing/resortingeve-info.html .