My Widget只是一个包含许多元素的ListView。那些应该可以通过ListView点击,因为所有元素都有两个按钮,那些也应该是可点击的。单击按钮时所需的操作是广播,而列表元素单击则应打开一个活动(可以正常工作)。
接收方在Manifest中注册,并具有相应的intent-filter。
在RemoteViewsFactory.getViewAt(int position)
中这样做是为了添加PendingIntent:
private void registerButtonListener(RemoteViews remoteView, int id, int zoneId) {
Intent intent = new Intent(WidgetTemperatureReceiver.ACTION);
intent.putExtra("id", zoneId);
intent.putExtra("up", id == R.id.buttonTempUp);
intent.setClassName(WidgetTemperatureReceiver.class.getPackage().getName(), WidgetTemperatureReceiver.class.getName());
PendingIntent pending = PendingIntent.getBroadcast(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteView.setOnClickPendingIntent(id, pending);
}
然而,没有收到任何东西。有什么想法吗?
答案 0 :(得分:0)
我猜你的包裹名称或类名没有正确传递。
而不是:
intent.setClassName(WidgetTemperatureReceiver.class.getPackage().getName(),
WidgetTemperatureReceiver.class.getName());
使用此:
intent.setClass(context, WidgetTemperatureReceiver.class);
其中context
是对Activity
或Service
或您正在执行此方法的任何组件的引用。