@ Waza_Be прав, поскольку просмотр списка «AppWidgetIds» для определения количества активных виджетов (установленных на вашем домашнем экране) является правильным способом узнать эту информацию.
Однако имейте в виду, чтовам НЕ СЛЕДУЕТ смотреть на это самостоятельно.
Ознакомьтесь с официальной документацией по Android для получения рекомендаций по использованию виджетов: https://developer.android.com/guide/topics/appwidgets/index.html#AppWidgetProvider
Правильный подход - переопределить только onUpdate ()метод и итерация по списку «активных» виджетов:
public class ExampleAppWidgetProvider extends AppWidgetProvider {
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, ExampleActivity.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.appwidget_provider_layout);
views.setOnClickPendingIntent(R.id.button, pendingIntent);
// Tell the AppWidgetManager to perform an update on the current app widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
}
И так как ваш собственный поставщик виджетов переопределяет AppWidgetProvider, вы НЕ перейдете в метод onUpdate (), если у вас нет активных виджетов на домашнем экране!
См. Код onReceive () Android AppWidgetProvider, который уже проверяет, что "appWidgetIds.length> 0":
public void onReceive(Context context, Intent intent) {
// Protect against rogue update broadcasts (not really a security issue,
// just filter bad broacasts out so subclasses are less likely to crash).
String action = intent.getAction();
if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) {
Bundle extras = intent.getExtras();
if (extras != null) {
int[] appWidgetIds = extras.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS);
if (appWidgetIds != null && appWidgetIds.length > 0) {
this.onUpdate(context, AppWidgetManager.getInstance(context), appWidgetIds);
}
}
}
(...)
}