Tengo este método hasta ahora, pero me pareció que faltaba algo
por ejemplo, tengo un archivo /sdcard/sound.3ga que devuelve falso (como si no hubiera actividad que pueda manejar este tipo de archivo), pero cuando lo abro desde el administrador de archivos se abre con el reproductor multimedia sin problema
Creo que esta intención no está completa y necesito algo más para asegurarme de que la variable handlerExists será falsa SOLO si no hay actividad que pueda manejar esta intención
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;
¿Has probado esta intención?
fuente
setPackage()
en la intención, esto fallará. Entonces, deberíamos ir porIntent.resolveActivity()
fuente
Puedes usar:
fuente
setPackage()
en la intención.Uso de Kotlin Si necesita hacer algo cuando la intención no está disponible,
Implemente este método como
Si no tienes nada que hacer,
fuente
Otro enfoque usando la extensión de kotlin
Uso dentro del fragmento
Uso dentro de la actividad
fuente
PackageManager
para su extensión diversión en lugar deContext
y evitarPackageManager.MATCH_DEFAULT_ONLY
this.isIntentAvailable(this)
es innecesariamente detallado. Solo useisIntentAvailable()