Подтвердить что ты не робот

Как начать работу с Android AppWidget?

Код, подобный этому, хорошо работает.

    Intent configIntent = new Intent (context, WidgetConfigActivity.class);
    configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
    PendingIntent pIntent = PendingIntent.getActivity(context, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    remoteView.setOnClickPendingIntent(R.id.btn, pIntent);

Но я хочу скрыть эту кнопку до того, как будет отображаться активность, поэтому я собираюсь отправить намерение самому виджету, выполнить скрытие компонентов в методе onReceive(), а затем начать работу. Проблема в том, что я не могу использовать функцию startActivity() в AppWidget.

Есть ли какое-либо решение?

4b9b3361

Ответ 1

Проблема в том, что я не могу использовать функцию startActivity() в AppWidget.

Да, вы можете. Вы передаёте объект Context в onUpdate() (или onReceive()) вашего AppWidgetProvider - вызов startActivity() на этом.

Ответ 2

Спасибо 2 CommonsWare

Есть еще одна вещь. context.startActivity(); бросает RuntimeException в этом случае.

Вызов функции startActivity() извне контекста действия требует флаг FLAG_ACTIVITY_NEW_TASK. Это действительно то, что вы хотите?

Итак, вам нужно установить флаг

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

раньше.

Ответ 3

   // on receive function use this for new activity start
               Intent intent = new Intent (context, AppWdget.class);
               intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK);
               context.startActivity (intent);