Android.os.TransactionTooLargeException recuperar aplicaciones instaladas
Estoy recuperando todas las aplicaciones instaladas en el dispositivo y me tropecé con este error.
java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:300) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:811) Caused by: java.lang.RuntimeException: Package manager has died at android.app.ApplicationPackageManager.queryIntentActivitiesAsUser(ApplicationPackageManager.java:499) at android.app.ApplicationPackageManager.queryIntentActivities(ApplicationPackageManager.java:485) at com.name.package.MyClass$RetrieveApps.doInBackground(MyClass.java:363) at com.name.package.MyClass$RetrieveApps.doInBackground(MyClass.java:1) at android.os.AsyncTask$2.call(AsyncTask.java:288) at java.util.concurrent.FutureTask.run(FutureTask.java:237) ... 4 more Caused by: android.os.TransactionTooLargeException at android.os.BinderProxy.transact(Native Method) at android.content.pm.IPackageManager$Stub$Proxy.queryIntentActivities(IPackageManager.java:2165) at android.app.ApplicationPackageManager.queryIntentActivitiesAsUser(ApplicationPackageManager.java:493) ... 9 more
En el método doInBackground () utilizo este código para recuperar las aplicaciones instaladas.
- Recurso de cadena duplicado en strings.xml android
- Hacer un estado seleccionado para textview (resaltado)
- Extras en el intento de correo electrónico - Preferencias XML
- Android cómo hacer que ImageView con un minWidth tiene un borde?
- Androide: pregunta LinearLayout y fill_parent simple
PackageManager packageManager = getPackageManager(); List<ResolveInfo> mResolveInfo; Intent queryIntent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER); mResolveInfo = packageManager.queryIntentActivities(queryIntent, 0); for (ResolveInfo ri : resolveInfos) { Class class = new Class(); class.icon = ri.loadIcon(packageManager); class.label = ri.loadLabel(packageManager); class.packagename = ri.activityInfo.packageName; class.packageclass = ri.activityInfo.name; class.componentName = new ComponentName(class.packagename, class.packageclass); Intent i = new Intent(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_LAUNCHER); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); i.setComponent(ai.componentName); class.intent = i; myArrayList.add(class);
La línea donde se produce el accidente es la siguiente:
mResolveInfo = packageManager.queryIntentActivities(queryIntent, 0);
Lectura de desbordamiento de pila Entiendo que esto puede deberse al hecho de que tiene muchas aplicaciones instaladas. La pregunta ahora es, ¿cómo se puede resolver? ¿Hay alguna solución? En caso afirmativo, ¿cuál? Gracias.
- Mejor editor de diseño XML de Android que el de Eclipse
- Retrofit y SimpleXML para el elemento raíz desconocido?
- Android Resource - Array de matrices
- Indicador de actualización de Android SwipeRefreshLayout no visible
- XmlPullParser getAttributeValue devuelve null
- XML Spinner atributos textAlignment = "derecho" API 16
- Almacenamiento de datos en línea ANDROID
- La configuración de un indicador personalizado para ExpandableListView no funciona
Estoy buscando la misma solución. ¿Hay alguna manera de hacer una lista parcial de aplicaciones instaladas?
Tengo el mismo problema en mi aplicación.
List<PackageInfo> packs = pm.getInstalledPackages(0);
Si el usuario tiene un gran número de aplicaciones, obtengo esto en logcat:
Causado por: java.lang.RuntimeException: El administrador de paquetes ha muerto en android.app.ApplicationPackageManager.getInstalledPackages (ApplicationPackageManager.java:424)
Causado por: android.os.TransactionTooLargeException en android.os.BinderProxy.transact (Método nativo) en android.content.pm.IPackageManager $ Stub $ Proxy.getInstalledPackages (IPackageManager.java:2363)
¡Actualizar!
Pude averiguar un camino. Vea esta respuesta que di en otro post:
El gestor de paquetes ha muerto
- No se puede ejecutar dex: varios archivos dex definen Lcom / nineoldandroids / animation / Animator $ AnimatorListener;
- ¿Cómo debo pasar los datos (por ejemplo, qué elemento se hizo clic) entre Actividades en MVP?