我使用RemoteViews时遇到了一些问题。我只想做一个显示电池电量的小部件。我已经完成了所有其他工作。
这是我的类:
public class BatteryLevel extends AppWidgetProvider{
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ context.startService(new Intent(context, BatteryMonitorReceiver.class)); }
public static class BatteryMonitorReceiver extends Service{ private int currentBatteryLevel = 0;
private BroadcastReceiver batteryReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent){ currentBatteryLevel = intent.getIntExtra("level", 0); } };
@Override public void onStart(Intent intent, int startId){ registerReceiver(this.batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); RemoteViews updateViews = new RemoteViews(getPackageName(), R.layout.main); updateViews.setTextViewText(R.id.level, String.valueOf(currentBatteryLevel));
ComponentName thisWidget = new ComponentName(this, BatteryLevel.class); AppWidgetManager manager = AppWidgetManager.getInstance(this); manager.updateAppWidget(thisWidget, updateViews); }
@Override public IBinder onBind(Intent intent){ return null; } } }
当我启动应用程序时,没有错误,但是R.id.level也没有更新。
怎么办?
注意:API版本为7。