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" />