我有一个应用程序小部件,仅在单击小部件时,我才想将文本(“ OnClicked”)打印到控制台(或吐司)。即,我不希望当前重启设备时打印文本。
- 是否只有在单击窗口小部件时才触发某种方法?如果是这样,那怎么办?
- 如果仅在单击窗口小部件时才想执行操作:是否需要将updatePeriodMillis设置为0值? (android:updatePeriodMillis =“ 0”)
这是我的appwidgetprovider的实现
@Override
public void onReceive(Context context,Intent intent) {
super.onReceive(context,intent);
}
@Override
public void onUpdate(Context context,AppWidgetManager appWidgetManager,int[] appWidgetIds) {
// Get all ids
ComponentName thisWidget = new ComponentName(context,MyWidgetProvider.class);
int[] allWidgetIds = appWidgetManager.getappWidgetIds(thisWidget);
for (int widgetId : allWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.my_widget_provider_layout);
// Register an onClicklistener
Intent intent = new Intent(context,MyWidgetProvider.class);
intent.setaction(AppWidgetManager.actION_APPWIDGET_UPDATE);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,appWidgetIds);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,intent,PendingIntent.flaG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.main_layout,pendingIntent);
appWidgetManager.updateAppWidget(widgetId,remoteViews);
}
Log.d("TAG","OnClicked");
}
这是清单部分:
<receiver android:name="com.example.MyWidgetProvider" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/my_widget_info" />
</receiver>