J'ai utilisé cette méthode jusqu'à présent, mais il semble qu'il manque quelque chose.
Par exemple, j'ai un fichier /sdcard/sound.3ga qui renvoie un message faux (comme si aucune activité ne pouvait gérer ce type de fichier), mais lorsque je l'ouvre à partir du gestionnaire de fichiers, il s'ouvre avec le lecteur multimédia sans problème.
Je pense que cette intention n'est pas complète et que je dois ajouter quelque chose pour m'assurer que la variable handlerExists sera fausse UNIQUEMENT s'il n'y a pas d'activité qui peut gérer cette intention.
PackageManager pm = getPackageManager();
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uriString)).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
intent.setDataAndType(Uri.fromFile(new File(uriString)),mimetype);
boolean handlerExists = intent.resolveActivity(pm) != null;