Estoy actualizando mi aplicación con el widget. No es el primer widget que he hecho. Siempre fui encontrando extraño problemas, pero el widget se shwoing en la lista final.

Aquí 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 WidgetProvider clase
  • Añadido widget de manifestar en la <application> sección (por alguna razón no puede pegar manifiesto fragmento de aquí, sólo que no se muestra, ver el código aquí)

Aún así, no se puede encontrar el widget en la lista de controles. Estoy de depuración de la aplicación en un dispositivo real. Estoy usando proyecto de la biblioteca, pero el widget de archivos, pero en el proyecto que ejecuta directamente. ¿Qué puede estar sucediendo aquí?

  • ¿Y si simplemente no aparece en Android 9?

7 Comentarios

  1. 28

    Corrió a través de temas similares, y esto es lo que me pasó. El siguiente Widget nunca apareció en el Widget del cajón hasta minResizeHeight fue añadido. Raro, pero puede ser que se requiere para el 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" />
    • Estoy usando resizeMode=»none» y todavía ayudado a agregar minResizeHeight y minResizeWidth.
  2. 23

    Este tipo de problema puede ocurrir con los 2 escenarios. Ambos son respondidas anteriormente, y esto es una respuesta completa y me he enfrentado a ambos escenarios y resolver tanto de ellos.

    Escenario1

    Si la aplicación especifica de android:installLocation=»preferExternal» parámetro en un manifiesto, la Aplicación se instalará en la memoria externa y no se mostrará en el widget de la lista. También si usted ha hecho su teléfono para instalar todas las aplicaciones en la tarjeta sd, esto también va a pasar.

    solución

    Ir a Ajustes->Aplicaciones>YourApp
    A continuación, «mover al teléfono». Esto va a mover la aplicación a la memoria del teléfono y ahora usted puede ver el widget en tu widget de lista

    Escenario 2

    Si la revisión anterior no resuelve el problema, entonces usted puede tener un dispositivo con android 4.X.X versión.

    A continuación, usted tiene que fijar, al menos, los siguientes parámetros en widget_info.xml archivo

    solución2

    android:minHeight=»XXXdp»
    android:minWidth=»XXXdp»

    • Para añadir a esto, si el minHeight y/o minWidth son demasiado grandes, no se mostrará en el widget de la lista. Después de cambiar a un menor res, se mostrará
  3. 9

    El problema era android:installLocation="preferExternal"

    De alguna manera causas de problema con el widget de la lista si la aplicación está instalada en la tarjeta SD

    • este simple código ayudó mucho y me salvó un montón de tiempo. gracias
    • De hecho, appwidgets siempre eran incompatibles con la SD de la instalación. Los usuarios no reciben ningún tipo de advertencia de Android, los widgets simplemente no aparecen en la lista
  4. 7

    He intentado todas las soluciones posibles y nada funcionó para mí…
    Y finalmente lo resolví.

    En mi caso el problema era overthinking: yo creía que en meta-datos etiqueta, se debe definir un nombre único para el proveedor (por ejemplo: «com.ejemplo.myprovider») así como un enlace a los recursos xml.

    Mal:

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

    Derecho:

    <meta-data
      android:name="android.appwidget.provider"
      android:resource="@xml/widget_info" />
    • Yo era la vinculación para el diseño widget en android:recurso en lugar del widget de información :-LOL
  5. 5

    Necesita 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> 

    Me prestaron este código de http://www.vogella.com/articles/AndroidWidgets/article.html

    El enlace para ver un tutorial completo

  6. 2

    después de horas de búsqueda y no resolver, decidí abrir un proyecto de ejemplo de un widget que funciona e ir comparando punto por punto para ver lo que estaba mal, en fin, voy a resolver añadido 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 algo de valor.

    • Este fue el culpable para mí también.
  7. 1

    En mi caso, el problema estaba en la intención de filtro en el receptor.

    Mal:

    <intent-filter>
        <action android:name="APPWIDGET_UPDATE" />
    </intent-filter>

    Correcta:

    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    </intent-filter>

Dejar respuesta

Please enter your comment!
Please enter your name here