widgets tutorial studio programacion móviles los español desarrollo curso como aplicaciones aparecen activar android android-widget

tutorial - no me aparecen los widgets android



El widget de Android no aparece en la lista después de desarrollado (6)

Debe registrar un BroadcastReceiver en el archivo de manifiesto. Por ejemplo:

<receiver android:icon="@drawable/icon" android:label="Example Widget" android:name="MyWidgetProvider" > <intent-filter > <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_info" /> </receiver>

Tomé prestado este código de http://www.vogella.com/articles/AndroidWidgets/article.html

Vea el enlace para un tutorial completo

Estoy actualizando mi aplicación con el widget. No es el primer widget que he hecho. Siempre me encontré con problemas extraños, pero el widget finalmente se estaba mostrando en la lista.

Esto es lo que he hecho hasta ahora:

  • Creado widget_layout.xml
  • Creado widget_info.xml

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="110dp" android:minHeight="30dp" android:updatePeriodMillis="86400000" android:initialLayout="@layout/widget_layout" android:resizeMode="none"> </appwidget-provider>

  • Creado la clase WidgetProvider
  • Se agregó un widget para manifestar en la sección <application> (por alguna razón no se puede pegar el fragmento del manifiesto aquí, simplemente no se muestra, vea el código here )

Aún así, no se puede encontrar el widget en la lista de widgets. Estoy depurando la aplicación en un dispositivo real. Estoy usando el proyecto de biblioteca, pero los archivos de widgets pero todos en el proyecto los ejecuto directamente. ¿Qué podría estar pasando aquí?


Después de horas de búsqueda y no resolviendo, decidí abrir un proyecto de muestra de un widget que funciona y comparar elementos por elemento para ver qué estaba mal. Al final, resolví agregar las siguientes líneas en mi res / xml / widget_info .xml:

android:minHeight="XXXdp" android:minResizeHeight="XXXdp" android:minResizeWidth="XXXdp" android:minWidth="XXXdp"

donde XXX es algún valor.


El problema era android:installLocation="preferExternal"

De alguna manera causa problemas con la lista de widgets si la aplicación está instalada en SD


Este tipo de problema puede ocurrir con 2 escenarios. Ambas son respondidas arriba y esta es una respuesta completa y me he enfrentado a ambos escenarios y resuelto ambos.

Escenario 1

Si la aplicación especifica el parámetro android: installLocation = "preferExternal" en el manifiesto, la aplicación se instalará en la memoria externa y no se mostrará en la lista de widgets. Además, si ha hecho que su teléfono instale todas las aplicaciones en la tarjeta SD, esto también sucederá.

solución

Vaya a Configuración-> Aplicaciones-> Su aplicación luego "Mover al teléfono". Esto moverá la aplicación a la memoria de su teléfono y ahora puede ver el widget en su lista de widgets

Escenario 2

Si la solución anterior no resolvió su problema, entonces puede tener un dispositivo con la versión de Android 4.XX.

Luego, debe establecer al menos los siguientes parámetros en el archivo widget_info.xml

solucion2

android: minHeight = "XXXdp" android: minWidth = "XXXdp"


Me encontré con problemas similares y esto es lo que me pasó. El widget a continuación nunca apareció en el cajón de widgets hasta que se agregó minResizeHeight. Raro, pero puede ser que sea necesario para un widget de tamaño variable. Podría haber sido más amable.

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:initialLayout="@layout/pmt_schedule_scroll_widget" android:minHeight="146dip" android:minResizeHeight="73dp" android:minWidth="146dip" android:resizeMode="vertical" android:updatePeriodMillis="0" />


Probé todas las soluciones posibles y nada me funcionó ... Y finalmente lo resolví.

En mi caso, el problema fue excesivo: creía que en la etiqueta de metadatos necesitamos definir un nombre único para el proveedor (por ejemplo, "com.example.myprovider"), así como un enlace al recurso xml.

Incorrecto:

<meta-data android:name="com.example.myprovider" android:resource="@xml/widget_info" />

Derecha:

<meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_info" />