【发布时间】:2017-03-03 10:30:58
【问题描述】:
我是第一次进行小部件开发。所以请多多包涵。我有一个从onStart() 启动小部件的Android 服务。所以我在我的WidgetProvider 类onUpdate() 中并更新按钮之类的视图。
现在我的问题是 -
1) 我如何处理小部件中的按钮按下并告诉服务按钮按下以便服务正常工作?
2) 服务完成工作后,需要更新小部件按钮,我该如何处理?
3) 当应用被杀死时,服务也被杀死。那么当我点击小部件时,如何确定该应用被杀死并打开应用?
4) 如果应用中的 UI 正在与服务通信并接收服务的响应,我如何将这些响应也告诉小部件?
我的小部件代码是这样的 -
public class MyWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
RemoteViews remoteViews;
ComponentName componentName;
remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
componentName = new ComponentName(context, MyWidgetProvider.class);
remoteViews.setOnClickPendingIntent(R.id.button1,getPendingSelfIntent(context, "Play",componentName));
remoteViews.setOnClickPendingIntent(R.id.button2,getPendingSelfIntent(context, "Pause",componentName));
appWidgetManager.updateAppWidget(componentName, remoteViews);
}
@Override
public void onReceive(Context context, Intent intent)
{
super.onReceive(context, intent);
if ("Play".equals(intent.getAction())) {
//I really dont know what to do here....
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews remoteViews;
ComponentName watchWidget;
remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
watchWidget = new ComponentName(context, MyWidgetProvider.class);
appWidgetManager.updateAppWidget(watchWidget, remoteViews);
}
}
protected PendingIntent getPendingSelfIntent(Context context, String action, ComponentName componentName) {
Intent intent = new Intent(context, MyService.class);
intent.setAction(action);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, componentName);
return PendingIntent.getService(context, 0, intent, 0);
}
}
请求你在这方面帮助我
【问题讨论】:
标签: java android widget android-widget