基於this教程我創建了一個應該顯示時間的小部件。 java的方式工作,但服務方式沒有。Android小工具更新
HelloWidget.java:
public class HelloWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Intent intent = new Intent(context, UpdateService.class);
context.startService(intent);
}
UpdateService.java:
public final class UpdateService extends Service {
@Override
public void onStart(Intent intent, int startId) {
RemoteViews updateViews = new RemoteViews(this.getPackageName(), R.layout.main);
Date date = new Date();
java.text.DateFormat format = SimpleDateFormat.getTimeInstance(
SimpleDateFormat.MEDIUM, Locale.getDefault());
updateViews.setTextViewText(R.id.widget_textview, "Current Time " + format.format(date));
ComponentName thisWidget = new ComponentName(this, HelloWidget.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
manager.updateAppWidget(thisWidget, updateViews);
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
的hello_widget_provider.xml具有此行:機器人:updatePeriodMillis = 「1000」
問題:小部件顯示當前時間,但它不更新(java方式)。
我的主要目標是更新例如每天18:56。 IDK如果這是很好的方式,但我試圖修改的onUpdate方法像下面,但它與ALARM_SERVICE一個問題:ALARM_SERVICE不能被解析爲一個變量
public class HelloWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
AlarmManager alarmManager;
Intent intent = new Intent(context, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 18);
cal.set(Calendar.MINUTE, 56);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 86400, pendingIntent);
} }
任何幫助表示讚賞。
我從未有過這種問題到目前爲止。當我按照你所說的鍵入時,getSystemService有一個問題:「getSystemService(String)方法未定義爲類型HelloWidget」 – erdomester 2011-02-03 23:11:08
getSystemService(String)是Context類的一個方法。但小工具提供者不是上下文。它們是廣播接收器,並在他們的方法中檢索上下文作爲參數。所以你應該在HelloWidget代碼中輸入context.getSystemService(Context.ALARM_SERVICE)。 – 2011-02-06 14:24:23