Android 4.0: ¿widgets no aparecen?

Tengo un widget que creé contra Android 2.1 que estuvo bien y vendiendo en el mercado.

Hice que un usuario se quejara de que lo había comprado y nunca apareció en su dispositivo con Android 4.0.

Cargué el emulador 4.0, lo ejecuté desde Eclipse, informó una instalación exitosa y, de hecho, puedo verlo listado en la aplicación “Widget Preview”, y puedo ejecutarlo allí y parece estar bien, pero no muestra en cualquier lugar debajo de “Widgets” – ¡No puedo encontrarlo para arrastrarlo a la pantalla de inicio! Supongo que esto es lo mismo que el usuario está viendo.

¿Alguna idea de lo que está pasando aquí? ¿Por qué está bien en 2.1 pero no aparece en la lista de 4.0, incluso después de una instalación exitosa?

Este es mi archivo layout \ widget.xml, si es de alguna ayuda:

      

Y el xml \ widget_provider.xml:

    

Así que aquí está la solución que se me ocurrió:

Necesitas una actividad que aparecerá en el iniciador. Así que primero tenemos el antiguo receptor de widgets, así:

         

Y luego necesitamos algo de actividad, con el conjunto MAIN y LAUNCHER:

        

Por lo que puedo decir, DEBES hacer esto incluso si se supone que tu widget es un widget puro sin actividades asociadas. Como mínimo, realice una actividad ficticia que inicie una pantalla que diga “Su widget está ahora listo para usar. Búsquelo en widgets y arrástrelo a su pantalla de inicio”.

En mi caso, mi artilugio lanzó una actividad cuando la pulsaste, así que hice esa actividad en LANZADOR / PRINCIPAL y acabo de agregar un diálogo emergente de una sola vez que básicamente dice “puedes ejecutar esto como una aplicación, pero es posible que quieras usar el widget en su lugar “.

Tenga en cuenta que en el emulador 4.0, nunca conseguí que mi widget apareciera en una primera instalación antes de este cambio. El simple hecho de tener una actividad establecida en MAIN y LAUNCHER parecía ser suficiente para que el widget apareciera.

Después de días descubrí la solución

así que pasemos a cualquiera de sus actividades que serán lanzadas cuando abra la aplicación y en la actividad principal agregue solo esta línea

sendBroadcast (nuevo Intento (Intent.ACTION_MAIN) .addCategory (Intent.CATEGORY_HOME));

como ejemplo

 public class Default class extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); sendBroadcast(new Intent(Intent.ACTION_MAIN) .addCategory(Intent.CATEGORY_HOME)); setContentView(R.layout.main); } 

eso es todo, esto le dará al sistema que la aplicación principal se está ejecutando y enviará el widget al iniciador 🙂 línea simple eso es, no modifique nada en el manifiesto, solo mantenga la forma en que desarrolló su aplicación que muestra el widget normalmente en las versiones anteriores <4.x

Tengo el mismo problema. Lo arreglé borrando las tags en mi appwidgetprovider.xml(located in res/xml) .

Debes iniciar manualmente la aplicación asociada al menos una vez para que aparezca el widget. Antes de eso, está en un estado no ejecutable y no recibirá transmisiones, etc.

Mi solución (Widget en 4.1.2) fue asegurarse de que el widget esté instalado en el almacenamiento interno del dispositivo.

De acuerdo con: Documentación de Android: ubicación de la instalación , no debe instalar widgets en el almacenamiento externo.

¡Tuve que desinstalar mi widget, instalarlo de nuevo y después de eso vi los cambios!

Enlace útil:

http://www.technipages.com/fix-android-app-widgets-not-appearing-on-widget-list