Comment vérifier si la ressource pointée par Uri est disponible?

J'ai de la ressource (fichier de musique) souligné par des Uri. Comment puis-je vérifier s'il est disponible avant j'ai essayer de jouer avec MediaPlayer?

Son Uri est stocké dans la base de données, de sorte que lorsque le fichier est supprimé ou sur stockage externe qui est démonté, alors je viens d'obtenir exception lorsque j'appel MediaPlayer.prepare().

Dans la situation ci-dessus que je voudrais jouer systèmes de sonnerie par défaut. Je pourrais bien sûr faire qu'après que j'ai attraper exception ci-dessus, mais peut-être il ya une certaine solution plus élégante?

edit:
J'ai oublié de mentionner que les fichiers de musique d'Uri sont effectivement acquises à l'aide de RingtonePreference. Cela signifie que je peux obtenir Uri pointant vers sonnerie de Stockage Interne, de Stockage Externe ou à défaut les systèmes de sonnerie.

Uri exemples sont:

  • contenu://settings/system/sonnerie - pour choisir la sonnerie par défaut
  • contenu://media/internal/audio/media/60 - pour la sonnerie de Stockage Interne
  • contenu://media/externe/audio/media/192 - pour la sonnerie sur Stockage Externe

J'ai été heureux avec le projet de "nouveau Fichier(chemin d'accès).il existe() la méthode, comme il m'a sauvé d'mentionné exception, mais après un certain temps j'ai remarqué qu'il renvoie false pour l'ensemble de mes sonnerie choix...
D'autres idées?

Avez-vous obtenir ces URI à l'aide de RingtoneManager.getCursor()? Ma compréhension est que tout, le curseur retourne devrait être disponible...

OriginalL'auteur Koger | 2011-10-04