У меня есть виджет под управлением Android, и я бы хотел, чтобы он обновлялся, когда пользователь нажимает кнопку на виджетах.Android AppWidgetProvider onReceive не нажимает кнопку на кнопке
По какой-то причине метод onReceive никогда не вызывается при нажатии кнопки после установки виджета.
У меня есть OnUpdate метод, как это в моем классе AppWidgetProvider:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
for (int i = 0; i < appWidgetIds.length; ++i) {
final RemoteViews rv =
new RemoteViews(context.getPackageName(), R.layout.appwidget_provider);
final Intent nextIntent =
new Intent(context, TestAppWidgetProvider.class);
nextIntent.setAction(TestAppWidgetProvider.NEXT_ACTION);
nextIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
final PendingIntent refreshPendingIntent =
PendingIntent.getBroadcast(context, 0,
nextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
rv.setOnClickPendingIntent(R.id.next, refreshPendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds[i], rv);
}
}
И тогда в моем режиме приема у меня есть метод, который выглядит как:
@Override
public void onReceive(Context ctx, Intent intent) {
super.onReceive(ctx, intent);
final String action = intent.getAction();
if (action.equals(PREV_ACTION)) {
Toast.makeText(ctx, "Previous clicked..", Toast.LENGTH_SHORT).show();
} else if (action.equals(NEXT_ACTION)) {
Toast.makeText(ctx, "Next was clicked..", Toast.LENGTH_SHORT)
.show();
}
else {
Toast.makeText(ctx, "Other action..", Toast.LENGTH_SHORT).show();
}
}
У меня есть это в моем манифесте файл тоже:
<receiver android:name="com.test.android.widget.TestAppWidgetProvider" >
<intent-filter >
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<intent-filter >
<action android:name="com.test.android.widget.PREV" />
</intent-filter>
<intent-filter >
<action android:name="com.test.android.widget.NEXT" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/appwidget_info" />
</receiver>
После того, как я установил виджет и нажал на следующую кнопку, метод onReceive d никогда не вызывается по какой-то причине ...
Вы можете поделиться своим решением? –