He revisado todas las preguntas similares aquí, pero no puedo por la vida de averiguar qué estoy haciendo mal.Lanzando un intento para el tipo de archivo y MIME?
He escrito una aplicación que intenta ejecutar varios archivos, como un buscador de archivos. Cuando se hace clic en un archivo, intenta iniciar el programa en función de su tipo MIME asociado o presenta el cuadro de diálogo "Elegir aplicación para iniciar".
Aquí está el código que estoy usando para lanzar:
File file = new File(app.mediaPath() + "/" +_mediaFiles.get(position));
Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
myIntent.setDataAndType(Uri.fromFile(file),mimetype);
startActivity(myIntent);
Esta falla y genera el error:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///file:/mnt/sdcard/roms/nes/Baseball_simulator.nes }
Ahora si instalo OI File Manager, por ejemplo, se abre en vez de esto Se está produciendo un error y, a continuación, si hago clic en el mismo archivo desde dentro, se inician los cuadros de diálogo correspondientes.
He notado que el tipo MIME para ese archivo en particular falla, pero otros tipos de mime como .zip
devuelven valores.
¿Me falta algo que cuando el tipo MIME es nulo para llamar a un cuadro de diálogo que permite al usuario seleccionar?
He intentado otras variaciones de lanzamiento de la aplicación, incluso no estableciendo el tipo MIME y solo usando .setData
sin éxito.
La acción que deseo que suceda es que un usuario haga clic en un archivo, si está asociado a una aplicación que se inicia, si no, el usuario obtiene el cuadro de diálogo "Utilizar acción completa" con una lista de aplicaciones.
Gracias por cualquier consejo.
¿Qué viene en una cadena de tipo mimet? pégalo aquí –
Parece que si se trata de algo que tiene un archivo asociado es el tipo MIME correcto, pero si es algo que no se ha vinculado a una aplicación, viene a través de un nulo ... – stonedonkey