Saltar al contenido

¿Cómo puedo configurar una intención de Android para múltiples tipos de archivos (pdf, oficina, imágenes, texto) y devolver una ruta?

Deseamos regalarte la mejor información que encontramos en todo internet. Nuestro deseo es que te resulte de mucha ayuda y si deseas compartir alguna mejora hazlo con total libertad.

Solución:

Tuve un problema similar y pasé al menos 15 minutos buscando un ejemplo de cómo codificar realmente el soporte para EXTRA_MIME_TYPES

Afortunadamente encontré un ejemplo http://android-er.blogspot.co.uk/2015/09/open-multi-files-using.html, lo probé, lo probé y parece funcionar para mi caso de uso que es poder encontrar y cargar dos tipos mime similares, pero no idénticos (por alguna extraña razón, el mismo archivo csv tiene un tipo mime si lo copio en el dispositivo a través de USB y otro si lo descargo de Google Conducir). Aquí está mi fragmento de código. Presumiblemente, agregaría más tipos de mimo en el array de cadenas para satisfacer sus necesidades.

public void findReviewsToLoad() 
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    String [] mimeTypes = "text/csv", "text/comma-separated-values";
    intent.setType("*/*");
    intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
    startActivityForResult(intent, FIND_FILE_REQUEST_CODE);

Puedes usar Intent.ACTION_OPEN_DOCUMENT,

Cada documento se representa como un URI content:// respaldado por un DocumentsProvider, que se puede abrir como una secuencia con openFileDescriptor(Uri, String) o consultar los metadatos de DocumentsContract.Document.

Todos los documentos seleccionados se devuelven a la aplicación de llamada con permisos persistentes de lectura y escritura. Si desea mantener el acceso a los documentos a través de los reinicios del dispositivo, debe tomar explícitamente los permisos persistentes mediante takePersistableUriPermission(Uri, int).

Las personas que llaman deben indicar los tipos MIME de documentos aceptables a través de setType(String). Por ejemplo, para seleccionar fotos, use image/*. Si se aceptan varios tipos MIME disjuntos, defínalos en EXTRA_MIME_TYPES y establezca Tipo(Cadena) en */*.

Para obtener más detalles, consulte aquí.

private static final int CHOOSE_FILE_REQUEST = 1;
///////////////////////////////////////////////////
 public void chooseFile()
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("*/*");
        String[] extraMimeTypes = "application/pdf", "application/doc";
        intent.putExtra(Intent.EXTRA_MIME_TYPES, extraMimeTypes);
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        startActivityForResult(intent, CHOOSE_FILE_REQUEST);


    

/////////////////////////////////////////////////////

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
        super.onActivityResult(requestCode, resultCode, data);

        String path = "";
        if (resultCode == RESULT_OK) 
            if (requestCode == CHOOSE_FILE_REQUEST) 
                ClipData clipData = data.getClipData();
                //null and not null path
                if(clipData == null)
                    path += data.getData().toString();
                else
                    for(int i=0; i

Te mostramos reseñas y puntuaciones

Recuerda algo, que tienes la capacidad de valorar este ensayo si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *