studio proveedor programacion móviles libro desarrollo definicion curso contenido aplicaciones android

android - programacion - proveedor de contenido de video



Obtenga una lista de proveedores de contenido disponibles (5)

Debería ser posible llamando a 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); } } }

¿Hay una manera de enumerar de forma programada todos los proveedores de contenido disponibles en un dispositivo? Sin un caso de uso real, simplemente pensé que podría ser ingenioso ver qué aplicaciones he instalado en mi teléfono que tienen proveedores de contenido expuestos.


Desde la línea de comando, ejecute:

adb shell dumpsys | grep Provider{

Tenga en cuenta la abrazadera de apertura. Esto le dará una lista corta de todos los proveedores instalados a través de varios paquetes.


Usé el comando adb shell como este $ adb shell dumpsys > dumpsys.txt y $ adb shell dumpsys > dumpsys.txt cadena de proveedores de contenido en el archivo de salida. Desde allí 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 usted 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 usado esto antes para verificar la existencia de mis propios proveedores de contenido, más específicamente los de instalaciones anteriores (gratuitas o de pago):

List<ProviderInfo> providers = getContext().getPackageManager() .queryContentProviders("com.mypackage", Process.myUid(), 0);

Tenga en cuenta el android.os.Process.myUid() para obtener la ID de usuario de mi propio proceso.


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;