Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Intent para abrir documento PDF

Estou montando um app simples, que lê um PDF e o transforma em String através do PDFbox. MAs estou com duvida: qual intent devo usar para abrir a galeria do celular e selecionar um arquivo PDF, mostrando seu titulo em uma TextView? Tentei o abaixo, baseado nos docs da Google, sem sucesso:

btnCarregaArq.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
                intent.setType("pdf/*");
                intent.addCategory(Intent.CATEGORY_OPENABLE);
                // Only the system receives the ACTION_OPEN_DOCUMENT, so no need to test.
                startActivityForResult(intent, REQUEST);
            }
3 respostas

Olá Flávio,

Não conheço o PDFbox mas para abrir a galeria e selecionar um arquivo do tipo PDF, você pode usar um código bem similar ao que você colocou. Você só precisa mudar a Intent no construtor para ACTION_GET_CONTENT e o tipo para application/pdf no setType().

Com isso o Android vai abrir um explorador de arquivos para que o usuário selecione apenas arquivos do tipo PDF e uma vez selecionado você pode receber o resultado (nesse caso o caminho do PDF selecionado) no método onActivityResult.

Obrigado pela rapidez professor! nem deu tempo de complementar a dúvida rsrs

Só mais uma questão: Nesse pdfBox, há o método abaixo:

document = PDDocument.load(assetManager.open("nomeDoArquivoaSerLido.pdf"));

Como posso recuperar o arquivo selecionado pelo usuário, e incluí-lo dentro do "assetManager.open"? Tentei utilizar o getTag através de uma variável do tipo File, e não obtive sucesso.

Obrigado!

solução!

Vamos tentar fazer o seguinte, no seu onActivityResult você pode tentar pegar o caminho do PDF que foi selecionado assim:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST) {
            if (resultCode == Activity.RESULT_OK) {
                // aqui a gente pega o caminho a partir da URI
                String caminho = data.getData().getPath();

                // aqui entraria o seu código
                document = PDDocument.load(assetManager.open(caminho));
            }
        }
    }

É só um palpite porque não sei se esse PDDocument vai aceitar o caminho convertido a partir da URI mas achio que vale a pena testar.