Ottieni un elenco di fornitori di contenuti disponibili

C'è un modo per elencare in modo programmato tutti i fornitori di contenuti disponibili su un dispositivo? Nessun caso di utilizzo reale, ho solo pensato che potrebbe essere ordinato vedere quali applicazioni ho installato sul mio telefono che hanno esposto fornitori di contenuti.

  • spinner aggiungendo l'arrays di stringhe sulla selezione degli elementi come è ansible get il valore correlato agli elementi in android
  • Come posso implementare annunci AdMob in un progetto Android LibGDX?
  • Utilizzo di un richiamo di timeout nelle richieste di async
  • Android - Imansible istanziare l'attività - L'exception di class non trovata dopo l'aggiornamento a ADT 22
  • Gestione di InterruptedException in attesa di un segnale di output (bug in Android?)
  • onActivityResult () & onResume ()
  • 5 Solutions collect form web for “Ottieni un elenco di fornitori di contenuti disponibili”

    Dovrebbe essere ansible chiamando PackageManager.getInstalledPackages () con GET_PROVIDERS .

    EDIT : esempio:

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

    Dalla row di command eseguire:

    adb shell dumpsys | grep Provider{

    Notare la fascetta di apertura. Questo vi darà un breve elenco di tutti i provider installati attraverso vari pacchetti.

    Ho usato il command shell di adb come questo $ adb shell dumpsys > dumpsys.txt e $ adb shell dumpsys > dumpsys.txt la string dei fornitori di contenuti nel file di output. Da quello posso vedere l'elenco dei fornitori di contenuti nel dispositivo / emulatore.

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

    elenca tutti i fornitori di contenuti disponibili per questo dispositivo.

    Oppure, se conosci il nome del process e l'UID del provider, puoi ridurre l'elenco specificando i due parametri. Ho usato questo prima per verificare l'esistenza dei miei fornitori di contenuti, in particolare quelli delle installazioni precedenti (gratuite o versate):

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

    Nota l' android.os.Process.myUid() per get l'ID utente del mio process.

     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; 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.