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版本的首选)