9

Bir aygıtta yüklü tüm uygulamaları listelemeli (root yok) bir Android uygulamasına sahibim. Ben hem de getInstalledPackages(0) yöntemlerini denedim, ancak bazı aygıtlarda, çok fazla sayıda uygulamanın yüklü olduğu anlaşılıyor, "Paket yöneticisi öldü" RuntimeException (bunları Google Play'in hata raporlama hizmeti aracılığıyla aldım). Bu, Android tarafından dahili olarak kullanılan IPC'de 1 çağrı başına 1 MB'lık iyi bilinen bir sınırlamadan kaynaklanmaktadır."Paket yöneticisi öldü" RuntimeException

Bu sorun nasıl çözülür? Uzun listeyi parçalar tarafından talep etmeyi umursamıyorum, ama bunun için hiçbir yol görmüyorum. Sadece yukarıda belirtilen iki yöntem mevcuttur.

+0

Vay, cihazda kaç tane uygulamanız var? Her neyse, sanırım çağrı başına 1MB devam eden tüm aramalar başına mı? Yani, İçerik Sağlayıcısı veya Intents gibi başka IPC'leriniz var mı? Başka büyük işlemleriniz varsa, bu aramanın limiti çok daha düşük olacaktır. – Kaediil

+0

Bu benim aygıtlarım değil. Bu uygulama Google Play'de yayınlanmaktadır ve binlerce yükleme yaklaşık olarak aldım. Haftada 1 böyle bir istisna. Başka işlemlerim yok - sadece getInstalledPackages (0) 'a tek bir çağrı. İnternet/Google gruplarından AFAIK, 1MB sınırlaması tek bir arama içindir. – Stan

+0

Wow, o zaman size yardımcı olacak fazla bir şey yok, Ama eğer bir TransactionTooLarge istisnası ise, Google’daki istisnadan sayfadan bahsediliyor: Binder işlem arabelleği, şu anda 1Mb sınırlı bir sabit büyüklüğe sahip. işlem için devam eden tüm işlemler tarafından. Sonuç olarak, bu istisna, bireysel işlemlerin çoğunun orta büyüklükte olduğu durumlarda bile çok sayıda işlem yapıldığında atılabilir. – Kaediil

cevap

1

Bu sorun, Android 5.1'den beri giderilmiştir. Android issuetracker'da ayrıntıları bulabilirsiniz.

İlgili konular