Android – Usando Intent para abrir arquivo (Using Intent to Open File)

Como abrir arquivos

Este é um post bem simples, como abrir arquivos atravez de um intent? ou somente como abrir um arquivo programaticamente?
Primeiro de tudo precisamos saber qual é a extensão de arquivo que você deseja abrir e seu MIME Type, abaixo tem uma tabela que vai esclarecer a maioria desses tipos:

Extension MIME Type
Android Application .apk application/vnd.android.package-archive
Text .txt text/plain
.csv text/csv
.xml text/xml
Web related .htm text/html
.html text/html
.php text/php
Image .png image/png
.gif image/gif
.jpg image/jpg
.jpeg image/jpeg
.bmp image/bmp
Audio .mp3 audio/mp3
.wav audio/wav
.ogg audio/x-ogg
.mid audio/mid
.midi audio/midi
.amr audio/AMR
Video .mpeg video/mpeg
.3gp video/3gpp
Package .jar application/java-archive
.zip application/zip
.rar application/x-rar-compressed
.gz application/gzip

Também existe uma forma de pegar esse MIME Type automatico que pode ser feito da seguinte maneira:

    private String getType(File file) {
        String type = null;
        try {
            URL u = file.toURL();
            URLConnection uc = null;
            uc = u.openConnection();
            type = uc.getContentType();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return type;
    }

(mas lembre-se de tratar os tipos desconhecidos ex: “content/unknown”).

Agora que temos o MIME Type é so abrir o arquivo através da Intent com a ação “ACTION_VIEW”:

            File file = new File("/sdcard/musica.mp3");
            String type = getType(file);
            Intent it = new Intent();
            it.setAction(android.content.Intent.ACTION_VIEW);
            it.setDataAndType(Uri.fromFile(file), type);
            try {
                startActivity(it);
            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(this, "Aplicativo necessário não encontrado.", Toast.LENGTH_SHORT);
            }

Note que inseri um try catch para tratar qualquer tipo de excessao referente a MIME Type não reconhecido, ou arquivo desconhecido.

Anúncios

5 comentários sobre “Android – Usando Intent para abrir arquivo (Using Intent to Open File)

  1. Estou tentando abrir um arquivo zip mas não consigo, será que vc pode me ajudar?

    fiz exatamente isso que vc colocou
    ainda coloquei o um System.out.println(type); antes do startActivity para ver se ele estava pegando o tipo certo e ele identifica como application/zip
    mas não abre a aplicação nem dá erro.

    No log do eclipse ele diz o seguinte:

    No Activity found to handle Intent

    preciso muito resolver isso

    • Victor o grande problema é que você não tem nenhum gerenciador de arquivos zip instalados no seu dispositivo por exemplo um ‘zipDroid’, no caso você deveria ter algum instalado pois o objetivo é enviar uma intent e ver o programa que seu dispositivo tem disponivel para abrir aquele tipo de arquivo. entendeu ? do contrario você deveria fazer na mão um gerenciador de zip!

  2. Ola amigo estou procurando na internet mas n consegui encontrar ainda. Você sabe como eu consigo listar os arquivos de audio do dispositivo android para q eu possa estar pegando o path deles e execuntando (no caso meu projeto é de um alarme)?

  3. Guilherme muito útil a sua explicação.
    Serviu muito para o que eu estava fazendo.
    Parabéns kra.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s