Android添加Widget
- 用Android Studio新建一个叫 New-Widget-App Widget
- 你会发现Android Studio把什么东西都给你配好了,包括Manifest里面的东西(;?;)
<receiver android:name=".view.widget.WeatherWidget" > <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/weather_widget_info" /></receiver>- 修改你的布局文件
- 新建一个Service便于每小时一次更新你的Widget,这里以天气Widget为例
- 在Service里的onStartCommand方法中进行每小时发送一次广播
@Overridepublic int onStartCommand(Intent intent, int flags, int startId) { if(null == timer){ timer = new Timer(); } timer.schedule(new TimerTask() { @Override public void run() { Log.d("widget","run"); //android.appwidget.action.APPWIDGET_UPDATE sendBroadcast(new Intent("android.appwidget.action.APPWIDGET_UPDATE")); } }, 0,interval); return super.onStartCommand(intent, flags, startId);}- 在对Widget进行处理的WeatherWidget onReceive里进行配置
@Overridepublic void onReceive(Context context, Intent intent) { super.onReceive(context, intent); String strAction = intent.getAction(); if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(strAction)) { /* Do update */ Log.d("widget","if"); AppWidgetManager gm = AppWidgetManager.getInstance(context); int[] ids = gm.getAppWidgetIds(new ComponentName(context, WeatherWidget.class)); onUpdate(context,AppWidgetManager.getInstance(context),ids); }}* 然后在updateAppWidget里修改控件就可以了,就像
views.setTextViewText(R.id.appwidget_text, widgetText);版权声明:本文为博主原创文章,未经博主允许不得转载。