RingtoneManager renvoie une sonnerie nulle

J’utilise RingtoneManager et, apparemment, sur certains téléphones, il renvoie la valeur null tout le temps. Je sais que la valeur est nulle si le son est silencieux ou si la tonalité est introuvable. Pourquoi renverrait null si le son est activé et qu’il y a une tonalité? Le code fonctionne sur mon nexus s ….

Voici ce que j’utilise:

Ringtone ringtone; ringtone = RingtoneManager.getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)); if(ringtone == null) { Log.d("Debug", "ringtone is null"); } else { ringtone.play(); } 

J’ai toutes les permissions activées pour jouer à la sonnerie (cela fonctionne sur mon téléphone) et même les permissions de la carte SD sont activées au cas où la sonnerie est sur la carte SD. Des pensées?

Je tombe juste dans quel est le problème. Si l’utilisateur a “Silencieux” comme la notification sonne la fonction:

 RingtoneManager.getRingtone(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)) 

renvoie null . Et cela explique pourquoi seuls certains utilisateurs trouvent ce problème.

Si vous copiez un son personnalisé sur votre téléphone qui est stocké sur le stockage externe, RingtoneManager ne peut pas l’ouvrir sauf si votre application dispose de l’autorisation d’accéder au stockage externe.

ajoutez l’autorisation manquante à votre fichier manifeste:

Il m’a fallu du temps pour comprendre cela, sans avoir le titre correct de sonneries personnalisées que certains utilisateurs avaient sur leurs appareils.