Obtenir une liste des fournisseurs de contenu disponibles

Existe-t-il un moyen de liste par programmation de tous les fournisseurs de contenu disponibles sur un périphérique? Aucun cas d'utilisation réelle, je pensais juste qu'il serait judicieux de voir quelles applications j'ai installées sur mon téléphone qui ont exposé des fournisseurs de contenu.

  • Le dégradé linéaire CSS3 ne fonctionne pas sur Android.
  • SwipeRefreshLayout est caché sur vide RecyclerView
  • Passer à l'écran d'accueil par programme
  • Comment lire un fichier texte dans Android?
  • Comment rendre un Relativelayout accessible?
  • Comment prendre en charge la taille d'écran différente dans Android
  • 5 Solutions collect form web for “Obtenir une liste des fournisseurs de contenu disponibles”

    Il devrait être possible en appelant PackageManager.getInstalledPackages () avec GET_PROVIDERS .

    EDIT : exemple:

      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); } } } 

    J'ai utilisé la commande shell adb comme cette $ adb shell dumpsys > dumpsys.txt et la $ adb shell dumpsys > dumpsys.txt recherche de fournisseurs de contenu dans le fichier de sortie. À partir de cela, je peux voir la liste des fournisseurs de contenu dans le périphérique / émulateur.

    Dans la ligne de commande, exécutez:

    adb shell dumpsys | grep Provider{

    Notez l'accolade d'ouverture. Cela vous donnera une liste restreinte de tous les fournisseurs installés via différents paquetages.

     List<ProviderInfo> providers = getContext().getPackageManager() .queryContentProviders(null, 0, 0); 

    Liste tous les fournisseurs de contenu disponibles sur ce périphérique.

    Ou, si vous connaissez le nom du processus et l'UID du fournisseur, vous pouvez réduire la liste en spécifiant ces deux paramètres. J'ai utilisé cela avant de vérifier l'existence de mes propres fournisseurs de contenu, plus précisément ceux des installations précédentes (gratuites vs. payées)

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

    Notez l' android.os.Process.myUid() pour obtenir l'ID utilisateur de mon propre processus.

     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; 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.