java – 无法从BroadcastReceiver更新android小部件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 无法从BroadcastReceiver更新android小部件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1868字,纯文字阅读大概需要3分钟。
内容图文
我想编写一个应用程序,在小部件中显示一些信息,应该不时更新.不时意味着,我使用闹钟定时器来触发peroidic更新.所以继承人的问题:intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);对于广播接收器意图为null.
这是我的小部件提供者:
public class MyWidgetProvider extends AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
for(int i=0; i<N; i++) {
int widgetId = appWidgetIds[i];
RemoteViews rViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
Intent intent = new Intent(context.getApplicationContext(), TrafficService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
rViews.setTextViewText(R.id.TextView01, "" + System.currentTimeMillis());
appWidgetManager.updateAppWidget(widgetId, rViews);
}
}
}
这是导致问题的BroadcastReceiver:
public class TimeIntervalReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// set new alarm timer (code cut out)
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context.getApplicationContext());
// PROBLEM BELOW!
int[] appWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
if(appWidgetIds == null) Log.d("TRAFFIC", "oh SHIT");
if(appWidgetIds != null && appWidgetIds.length > 0) {
for(int widgetId : appWidgetIds) {
RemoteViews rViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
rViews.setTextViewText(R.id.TextView01, "some data");
appWidgetManager.updateAppWidget(widgetId, rViews);
}
}
}
}
这甚至可以解决吗?
解决方法:
当系统调用AppWidgetProvider的实现时,它会使用这些额外内容填充intent.
但是当它调用与小部件无关的广播接收器时,它不会在意图中填充额外的内容.
您将不得不使用另一种方法来传输ID.也许你可以填写它们在警报触发时被触发的Intent?
内容总结
以上是互联网集市为您收集整理的java – 无法从BroadcastReceiver更新android小部件全部内容,希望文章能够帮你解决java – 无法从BroadcastReceiver更新android小部件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。