其他几个人已经发现,在银河S3S调整的AppWidget时OnAppWidgetOptionsChanged不会被调用,而解决办法是捕捉的onReceive的com.sec.android.widgetapp.APPWIDGET_RESIZE
如下所述:银河S3和AppWidgets:OnAppWidgetOptionsChanged最小和最大尺寸
How to catch widget size changes on devices where onAppWidgetOptionsChanged not getting called?
在该方法中,他们从收到的意图的高度和窗口小部件的宽度:
int widgetSpanX = intent.getIntExtra("widgetspanx", 0);
int widgetSpanY = intent.getIntExtra("widgetspany", 0);
中,然后设置这些成捆作为值OPTION_APPWIDGET_MIN_HEIGHT和OPTION_APPWIDGET_MIN_WIDTH,然后将它们传递给对OnAppWidgetOptionsChanged的调用。
现在,我遇到的问题是,通常的OnAppWidgetOptionsChanged回调提供了min 和它的包中的一个调整大小的小部件的最大尺寸,而不仅仅是最小值。这些值对应于维度两个小部件的横向和纵向模式:
对于肖像,宽度为OPTION_APPWIDGET_MIN_WIDTH,高度为OPTION_APPWIDGET_MAX_HEIGHT。
对于横向,宽度为OPTION_APPWIDGET_MAX_WIDTH,高度为OPTION_APPWIDGET_MIN_HEIGHT。
最小和最大尺寸之间的差异可能非常大,因为景观单元覆盖的给定区域比纵向单元格宽和短得多。我需要它们两个才能找出两种模式下控件的实际宽高比。
是否有实现这一意图可能对应于这些最小值和最大值的任何其他值,或者是widgetspanx和widgetspany唯一的整数值可用?
或者,当您将主屏幕模式从纵向更改为横向时,s3是否提供另一个具有不同值的com.sec.android.widgetapp.APPWIDGET_RESIZE
事件?
不幸的是,我无法访问S3以便能够检查我自己的意图。
谢谢!我也会在我的应用中使用这个解决方案。不幸的是我没有访问任何三星设备....我希望它会比使用“widgetSpanX * 74”方法更正确地工作。 – porlicus 2016-06-22 07:14:32