Quién puede mostrar más proveedores con ACTION_OPEN_DOCUMENT

Quiero utilizar el cuadro de diálogo del sistema de Android proporcionado como parte del marco de acceso de almacenamiento para abrir un archivo. Hago esto con

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("application/pdf"); startActivityForResult(intent, EDIT_REQUEST); 

Y luego manejar el URI devuelto en onActivityResult() .

El problema es que, en el menú resultante, obtengo mucho menos proveedores de contenido de lo que esperaba. Solo Google Drive y Descargas (vea la captura de pantalla de la izquierda abajo). Otros, como Dropbox, Solid Explorer, … no se muestran.

Sospecho que la razón es que estas aplicaciones simplemente no establecen el filtro de intenciones necesario para aparecer en esta lista.

Sin embargo, otras aplicaciones, como Kaiten Mail o Chrome, de alguna manera logran mostrar el diálogo del sistema con proveedores de contenido totalmente implementados en la parte superior de la lista y otros, como Dropbox y Solid Explorer, separados por una barra delgada. Derecha).

¿Cómo puedo obtener este comportamiento?

Comparación de la conducta que obtengo (izquierda) y la que quiero (derecha)

Utilice 'ACTION_GET_CONTENT:

 Intent intent = new Intent(Intent. ACTION_GET_CONTENT); intent.setType("application/pdf"); startActivityForResult(intent, EDIT_REQUEST); 
  • Uso de tipos de compilación en Gradle para ejecutar la misma aplicación que utiliza ContentProvider en un dispositivo
  • Android OnLoadFinished () no se llama cuando el cursor cambia
  • Master-detail Uso de ContentResolver.applyBatch ()?
  • Cómo implementar un ContentObserver en un fragmento utilizando CursorAdapter y LoaderCallbacks?
  • ¿Cómo actualizar el nombre para mostrar con la identificación de correo electrónico?
  • ¿Posible usar varias autoridades con FileProvider?
  • Content: // mms-sms / conversations / return NullPointerException en Android ICS Samsung
  • Obtenga todos los nombres y números de contacto como una lista de cadenas en Android
  • SQLiteConstraintException: código de error 19: error de restricción - error de Android
  • Android: obtenga la hora de la fecha de la marca de tiempo de SMS en milisegundos
  • Android: documentación para el contenido: // sms / "type" values?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.