Android 是否可以从AppWidgetProvider从RemoteViewsService获取数据?
我想为我的应用程序提供一个小部件,当用户单击一个按钮时,应用程序将使用Android 是否可以从AppWidgetProvider从RemoteViewsService获取数据?,android,android-widget,Android,Android Widget,我想为我的应用程序提供一个小部件,当用户单击一个按钮时,应用程序将使用RemoteViewsService中的数据打开。有可能得到它吗?要设置列表,我们需要RemoteViews\setRemoteAdapter。是否有类似于RemoteViews#getRemoteAdapter public class WidgetProvider extends AppWidgetProvider { @Override public void onUpdate(Context cont
RemoteViewsService
中的数据打开。有可能得到它吗?要设置列表,我们需要RemoteViews\setRemoteAdapter
。是否有类似于RemoteViews#getRemoteAdapter
public class WidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int appWidgetId : appWidgetIds) {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
Intent itemIntent = new Intent(context, WidgetItemService.class);
views.setRemoteAdapter(R.id.item_list, itemIntent);
views.setEmptyView(R.id.item_list, R.id.empty);
Intent buttonIntent = new Intent(context, ActivityA.class);
//TODO: Something like this
buttonIntent.putExtra(EXTRA_DATA, views.getRemoteAdapter().getData());
PendingIntent buttonPendingIntent = PendingIntent.getActivity(context, 0, buttonIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.button, buttonPendingIntent);
}
}
}
即使有像getRemoteAdapter()这样的方法,我还是希望使用另一种方法从
AppWidgetProvider
向活动
传递数据。其主要原因是安全性:
作为Intent
extra和startActivity()
传递的所有内容对应用程序来说都不是私有的
pendingent.getActivity()
将在引擎盖下调用startActivity()
,因此这基本上是相同的问题
但是,由于您的
远程视图服务
是从服务
扩展而来,您只需启动活动
,而活动
可以向服务
询问要显示的数据。在活动
和服务
之间有几种通信方式(例如,通过LocalBroadcastManager
发送本地广播)-这是您的选择(尽管使用绑定的服务
可能是个好主意,因为这种类型似乎是未来android版本的首选)即使有像getRemoteAdapter()这样的方法,我还是希望使用另一种方法从AppWidgetProvider
向活动
传递数据。其主要原因是安全性:
作为Intent
extra和startActivity()
传递的所有内容对应用程序来说都不是私有的
pendingent.getActivity()
将在引擎盖下调用startActivity()
,因此这基本上是相同的问题
但是,由于您的远程视图服务
是从服务
扩展而来,您只需启动活动
,而活动
可以向服务
询问要显示的数据。在活动
和服务
之间有几种通信方式(例如,通过LocalBroadcastManager
发送本地广播)-这是您的选择(尽管使用绑定的服务
可能是个好主意,因为这种类型似乎是未来android版本的首选)