9

Ho un'app per Android che dovrebbe elencare tutte le app installate su un dispositivo (nessuna radice). Ho provato entrambi i metodi getInstalledApplications(0) e getInstalledPackages(0) di PackageManager, ma su alcuni dispositivi, che apparentemente hanno troppe app installate, ricevo "Gestione pacchetti è morto" RuntimeException (li ricevo tramite il servizio di segnalazione errori di Google Play). Ciò è dovuto a una ben nota limitazione della chiamata da 1 MB per 1 in IPC utilizzata internamente da Android.Risoluzione "Il gestore pacchetti è morto" RuntimeException

Come soluzione alternativa? Non mi dispiace chiedere la lunga lista a pezzi, ma non vedo alcunché per quello. Sono disponibili solo 2 metodi sopra menzionati.

+0

Wow, quante app hai sul dispositivo? Ad ogni modo, l'1MB per chiamata penso sia per tutte le chiamate in corso? Quindi, hai altri IPC in corso? Come Content Provider o Intenti? Se hai altre grandi transazioni in corso, il limite per questa chiamata sarà molto più basso. – Kaediil

+0

Non sono i miei dispositivi. Questa app è pubblicata su Google Play e, con migliaia di installazioni, ricevo ca. 1 tale eccezione a settimana. Non ho altre transazioni - solo una chiamata a 'getInstalledPackages (0)'. AFAIK da Internet/gruppi Google, il limite di 1 MB è per una singola chiamata. – Stan

+0

Wow, non ho molto per aiutarti allora, ma se si tratta di un'eccezione TransactionTooLarge, dalla pagina su quell'eccezione su Google viene indicato: Il buffer di transazione Binder ha una dimensione fissa limitata, attualmente 1Mb, che è condivisa da tutte le transazioni in corso per il processo. Di conseguenza, questa eccezione può essere generata quando ci sono molte transazioni in corso anche quando la maggior parte delle singole transazioni ha dimensioni moderate. – Kaediil

risposta

1

Il problema è stato risolto da Android 5.1. È possibile trovare dettagli in Android issuetracker.