Launching and Intent from file and mime type

Posted by stonedonkey on Stack Overflow See other posts from Stack Overflow or by stonedonkey
Published on 2012-06-17T03:09:25Z Indexed on 2012/06/17 3:16 UTC
Read the original article Hit count: 164

Filed under:
|

I've reviewed all the similar questions here, but I can't for the life of me figure out what I'm doing wrong.

I've written an application that tries to launch various files, sort of a file browser, when a file is clicked it tries to launch the program based on it's associated MIME type or I want it to present the "Choose Application to Launch" dialog.

Here's the code I'm using to launch:

    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);

This fails and generates a:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///file:/mnt/sdcard/roms/nes/Baseball_simulator.nes }

Now if I install OI File Manager for instance, it opens instead of this error being thrown, and then if I click the same file from within in it, it launches the approriate dialogs.

I have noticed that the MIME type for that particular file fails, but other mime types like .zip do return values.

Am I missing something that when the MIME type is null to call a dialog that lets the user select?

I've tried other variations of launching the app, including not setting the mime type and only using .setData with no success.

The action I want to happen is, a user clicks a file, if it's associated with an application that app launches, if not, the user gets the "Complete action using" dialog with a list of apps.

Thanks for any advice.

© Stack Overflow or respective owner

Related posts about android

Related posts about android-intent