Как получить appWidgetId в AppWidgetProvider? - PullRequest
0 голосов
/ 26 февраля 2012

Мне нужно получить конкретный appWidgetId в AppWidgetProvider, а не набор appWidgetIds [], а конкретный идентификатор, по которому щелкнул пользователь.

Я мог бы получить его в действии конфигурирования, используя «intent.getExtra (). GetInt (AppWidgetManager.APP_WIDGET_ID)», как 504.

Но в AppWidgetProvider все по-другому, ябуду признателен, если кто-нибудь даст мне руку. спасибо заранее.

public class WidgetBox extends AppWidgetProvider implements Widget {

private int _widgetId = ?; // not appWidgetIds[]

}

1 Ответ

0 голосов
/ 26 февраля 2012

При вызове методов жизненного цикла виджета вы получите массив идентификаторов.Вы можете просто перебрать предоставленные идентификаторы следующим образом:

@Override
public void onUpdate(final Context context, final AppWidgetManager appWidgetManager, final int[] appWidgetIds) {
    final int n = appWidgetIds.length;
    for( int i = 0; i < n; i++ ) {
        final int appWidgetId = appWidgetIds[i];
        // some logic here
    }
}

, если вам нужно вызвать какое-либо действие, это делается с использованием ожидающего намерения во время конфигурации (или более позднего обновления):

final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
final Intent defineIntent = new Intent(context, YourTargetActivity.class);
defineIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0 /* no request code */, defineIntent, 0);
views.setOnClickPendingIntent(R.id.view_id, pendingIntent);
...