Я отправляю этот ответ, потому что мой интерфейс администратора Virtualmin / Webmin решил, что было бы неплохо отключить мой PHP-движок. Я нашел время, чтобы найти решение, поэтому я решил поделиться с ним вы, ребята:
Также не забудьте проверить, что ни один из ваших конфигурационных файлов вашего сайта, связанных с этим конкретным хостом или виртуальным хостом, не имеет в них php_admin_value, которые отключают PHP, например:
php_admin_value engine Off
В случае сомнений прокомментируйте это ...
# php_admin_value engine Off
И перезагрузите свой веб-сервер.
Если вы равны , используя AppWidgetProvider
, вы можете обновить его следующим образом:
Intent intent = new Intent(this, MyAppWidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
// Use an array and EXTRA_APPWIDGET_IDS instead of AppWidgetManager.EXTRA_APPWIDGET_ID,
// since it seems the onUpdate() is only fired on that:
int[] ids = AppWidgetManager.getInstance(getApplication())
.getAppWidgetIds(new ComponentName(getApplication(), MyAppWidgetProvider.class));
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
sendBroadcast(intent);
Просто получите экземпляр AppWidgetManager
и обновите его напрямую. Или, если вы используете IntentService
для выполнения обновлений, вызовите startService()
на IntentService
. AppWidgetProvider
- это способ обновления виджета приложения, но это не единственный способ.
Решение Phaethon в Kotlin:
val intent = Intent(this, MyAppWidgetProvider::class.java)
intent.action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
val ids = AppWidgetManager.getInstance(application).getAppWidgetIds(ComponentName(getApplicationContext(),MyAppWidgetProvider::class.java!!))
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids)
sendBroadcast(intent)
Где MyAppWidgetProvider получен из AppWidgetProvider: class MyAppWidgetProvider : AppWidgetProvider() {
int widgetIDs[] = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), WidgetProvider.class));
for (int id : widgetIDs)
AppWidgetManager.getInstance(getApplication()).notifyAppWidgetViewDataChanged(id, R.id.widget_view);
}
notifyAppWidgetViewDataChanged()
, которая принимает массив.
– Lawrence Kesteloot
5 March 2016 в 02:18
Попробуйте следующее:
int[] ids = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), MyWidget.class));
MyWidget myWidget = new MyWidget();
myWidget.onUpdate(this, AppWidgetManager.getInstance(this),ids);
Если вы работаете с виджетами, которые используют коллекцию, такую как ListView, GridView или StackView, для обновления элементов виджетов, выполните следующие действия:
Context context = getApplicationContext();
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName thisWidget = new ComponentName(context, StackWidgetProvider.class);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.stack_view);
С помощью этого метода notifyAppWidgetViewDataChanged () , вы можете заставить элементы виджета получать новые данные в реальном времени.
Итак, чтобы обновить виджет из активности, вы можете сделать это следующим образом:
Intent intent = new Intent(this, DppWidget.class);
intent.setAction("android.appwidget.action.APPWIDGET_UPDATE");
int ids[] = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), DppWidget.class));
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids);
sendBroadcast(intent);
Работает для меня :)
widgetId
? – Kris B 12 July 2012 в 18:59intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
– Mārtiņš Briedis 16 July 2013 в 19:46