¿Hay alguna manera de enumerar programáticamente todos los content providers disponibles en un dispositivo? No es un caso de uso real, solo pensé que sería bueno ver qué aplicaciones tengo instaladas en mi teléfono que tienen proveedores de contenido expuestos.Obtenga una lista de proveedores de contenido disponibles
Respuesta
Debería ser posible llamando al PackageManager.getInstalledPackages() con GET_PROVIDERS
.
EDITAR: ejemplo:
for (PackageInfo pack : getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS)) {
ProviderInfo[] providers = pack.providers;
if (providers != null) {
for (ProviderInfo provider : providers) {
Log.d("Example", "provider: " + provider.authority);
}
}
}
Pude imprimir una lista de proveedores, pero ¿cómo puedo determinar el contenido real que se puede consultar? ¿ProviderInfo contiene el URI que puedo pasar a una llamada a query()? – gonzobrains
@gonzobrains No, nunca lo sabrás hasta que liberen la secreta de su aplicación :) – dhams
Estoy buscando el URI de marcadores para un dispositivo determinado. No puedo encontrar contenido: // navegador/marcadores uri usando tu código? alguna idea sobre cómo encontrar el marcador adecuado uir? (vea mi pregunta http://stackoverflow.com/questions/28040445/android-browser-bookmarks-uri-does-not-work-on-all-device-how-to-find-out-the-c) – Pascal
que utiliza comando adb shell como esto $ adb shell dumpsys > dumpsys.txt
y la búsqueda de proveedores de contenido cadena en el archivo de salida. De eso puedo ver la lista de proveedores de contenido en el dispositivo/emulador.
List<ProviderInfo> providers = getContext().getPackageManager()
.queryContentProviders(null, 0, 0);
enumera todos los proveedores de contenido disponibles para ti en este dispositivo.
O, si conoce el nombre del proceso y el UID del proveedor, puede reducir la lista especificando esos dos parámetros. He utilizado este antes para comprobar la existencia de mis propios proveedores de contenido, más específicamente aquéllos de anterior (frente libre pagado): instalaciones
List<ProviderInfo> providers = getContext().getPackageManager()
.queryContentProviders("com.mypackage", Process.myUid(), 0);
Nota del android.os.Process.myUid()
para obtener el ID de usuario de mi propio proceso.
Desde la línea de comandos, ejecute:
adb shell dumpsys | grep Provider{
Nota la llave de apertura. Esto le dará una breve lista de todos los proveedores instalados a través de varios paquetes.
List<ProviderInfo> returnList = new ArrayList<ProvderInfo>();
for (PackageInfo pack:getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS))
{
ProviderInfo[] providers = pack.providers;
if (providers != null)
{
returnList.addAll(Arrays.asList(providers));
}
}
return returnList;
- 1. ¿Cómo obtener una lista de proveedores de red disponibles?
- 2. Android Lista de proveedores de contenido
- 3. Android - proveedores de contenido sqlite y multihilo
- 4. Obtenga espacios de nombres de clojure disponibles
- 5. Cómo probar proveedores de contenido en Android
- 6. obtener una lista de enumeraciones disponibles
- 7. SharePoint: obtenga una lista de usuarios actuales
- 8. Obtenga sumas ordenadas de una lista ordenada
- 9. Lista de puertos COM disponibles
- 10. BeautifulSoup: Obtenga el contenido de una tabla específica
- 11. NSLocale: obtenga todos los idiomas disponibles
- 12. Ejemplos de proveedores de contenido que no usan SQLite
- 13. Obtenga una lista de valores distintos en la Lista
- 14. Obtenga una lista de las galerías de fotos en Android
- 15. Obtenga una lista de URL de un sitio
- 16. PHP Obtenga el contenido de una URL o página
- 17. Obtenga el contenido de una carpeta sharepoint con Excel VBA
- 18. Lista de conceptos de OOP disponibles
- 19. Obtenga el contenido del módulo
- 20. ¿Dónde puedo encontrar una lista de URL de proveedores de OpenID?
- 21. Obtenga el contenido de NSTextField a escala
- 22. Android: Lista de certificados raíz confiables disponibles
- 23. Obtener lista de puntos WiFi disponibles
- 24. Rellenar ComboBox con lista de fuentes disponibles
- 25. ¿Dónde hay una lista de intenciones disponibles en Android?
- 26. ¿Cómo recuperar una lista de fuentes disponibles/instaladas en android?
- 27. Obtener una lista de tonos disponibles en Android
- 28. Buscando una lista de todos los idiomas disponibles en iOS
- 29. ¿Cómo obtener una lista de todos los servlets disponibles?
- 30. Obtenga una lista de reglas de validación en Rails 3?
Puede ejecutar 'bugreport' adb desde la línea de comandos que volcar una tonelada * * de información sobre el dispositivo activo, incluyendo un montón de información acerca de cada paquete y todo lo que ofrecen: actividades, servicios, proveedores de contenido. .. –
posible duplicado de [Lista de proveedores de contenido de Android] (http://stackoverflow.com/questions/1187541/android-content-provider-list) – richq