El widget no aparece en la lista de widgets

He leído varias preguntas sobre esto en stackoverflow, y ninguna de las respuestas está resolviendo mi problema.

Estoy intentando agregar un widget de pantalla de inicio a mi aplicación y mi widget no aparece en la lista de widgets de Android.

He intentado reiniciar el dispositivo , reinstalar la aplicación, cambiar los parámetros en el archivo de configuración, asegurando que la aplicación no esté instalada en la tarjeta SD. Nada funciona.

Aquí está el código que tengo actualmente:

Dentro de la etiqueta de aplicación de AndroidManifest.xml:

<receiver android:name=".GulpWidgetProvider" android:icon="@mipmap/ic_launcher" android:label="Gulp"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/gulp_widget_info" /> </receiver> 

Dentro de /res/xml/gulp_widget_info.xml:

 <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:initialLayout="@layout/layout_widget" android:minHeight="150dip" android:minWidth="400dip" android:updatePeriodMillis="86400000" android:widgetCategory="home_screen" android:resizeMode="none" android:minResizeHeight="150dip"/> 

Dentro de /res/layout/layout_widget.xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="150dip" android:background="@drawable/gradient" android:gravity="center_horizontal|top"> <RelativeLayout android:layout_width="170dip" android:layout_height="150dip" android:gravity="center"> <ProgressBar android:id="@+id/widget_consumption_progress_bar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="150dip" android:layout_height="150dip" android:layout_centerInParent="true" android:indeterminate="false" android:max="100" android:progress="0" android:progressDrawable="@drawable/progressbar" android:secondaryProgress="100" /> <ProgressBar android:id="@+id/widget_time_progress_bar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="150dip" android:layout_height="150dip" android:layout_centerInParent="true" android:indeterminate="false" android:max="100" android:progress="0" android:progressDrawable="@drawable/progressbar2" android:secondaryProgress="100" /> <TextView android:id="@+id/widget_water_consumed" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:fontFamily="sans-serif-light" android:gravity="center" android:maxLines="1" android:textColor="@color/white" android:textSize="30sp" /> <TextView android:id="@+id/widget_unit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/water_consumed" android:layout_centerInParent="true" android:fontFamily="sans-serif-light" android:gravity="center" android:maxLines="1" android:text="@string/milliliters_abbrev" android:textColor="@color/white" android:textSize="12sp" /> </RelativeLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:orientation="horizontal" android:paddingLeft="10dip" android:paddingRight="10dip"> <TextView android:id="@+id/widget_add" style="@style/GulpButton" android:layout_width="60dip" android:layout_height="60dip" android:background="@drawable/whitecirclebutton" android:gravity="center" android:text="@string/add_abbrev" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/widget_goal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="sans-serif-light" android:textColor="@color/white" android:textSize="22sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="sans-serif-light" android:text="@string/target" android:textColor="@color/white_semi_translucent" android:textSize="14sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/widget_remaining" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="sans-serif-light" android:textColor="@color/white" android:textSize="22sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="sans-serif-light" android:text="@string/remaining" android:textColor="@color/white_semi_translucent" android:textSize="14sp" /> </LinearLayout> </LinearLayout> </LinearLayout> 

Dentro de /java/info/andrewdahm/gulp/GulpWidgetProvider.java:

 public class GulpWidgetProvider extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { final int N = appWidgetIds.length; // Perform this loop procedure for each App Widget that belongs to this provider for (int i=0; i<N; i++) { int appWidgetId = appWidgetIds[i]; // Create an Intent to launch ExampleActivity Intent intent = new Intent(context, Main.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); // Get the layout for the App Widget and attach an on-click listener // to the button RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.layout_widget); views.setOnClickPendingIntent(R.id.widget_add, pendingIntent); // Tell the AppWidgetManager to perform an update on the current app widget appWidgetManager.updateAppWidget(appWidgetId, views); } } } 

¿Alguna idea de por qué mi widget no aparece en la lista de widgets?

Es un problema sobre los valores que estableció en gulp_widget_info.xml para android:minHeight y android:minWidth .

Intente establecer valores más pequeños y el widget debe aparecer en la lista de widgets del lanzador:

 <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:initialLayout="@layout/layout_widget" android:minHeight="40dip" android:minWidth="40dip" android:updatePeriodMillis="86400000" android:widgetCategory="home_screen" android:resizeMode="none" /> 

He probado esta configuración en mi teléfono con Google Now Launcher y aparece con el tamaño 1×1

La regla para calcular el tamaño es 70 × n − 30 donde n es el número de celdas que desea. Puede encontrar más información sobre cómo determinar el tamaño del widget aquí .

De acuerdo con este enlace, la actividad debe declararse en el archivo XML de AppWidgetProviderInfo, con el atributo android: configure y faltan esto.

  • El widget de la aplicación de Android se bloquea después de un período de tiempo indefinido
  • Widget de Android que no se actualiza - tiene una ID de widget incorrecta
  • Actualizar el widget de la aplicación de Android manualmente mediante un botón en el widget
  • Makecaleupanimation de appwidget
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.