Tôi thêm vào câu trả lời Frankish với cách tôi xử lý nhận phát sóng này:
@Override
public void onReceive(Context context, Intent intent) {
// Handle TouchWiz
if(intent.getAction().contentEquals("com.sec.android.widgetapp.APPWIDGET_RESIZE")) {
handleTouchWiz(context, intent);
}
super.onReceive(context, intent);
}
private void handleTouchWiz(Context context, Intent intent) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int appWidgetId = intent.getIntExtra("widgetId", 0);
int widgetSpanX = intent.getIntExtra("widgetspanx", 0);
int widgetSpanY = intent.getIntExtra("widgetspany", 0);
if(appWidgetId > 0 && widgetSpanX > 0 && widgetSpanY > 0) {
Bundle newOptions = new Bundle();
// We have to convert these numbers for future use
newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, widgetSpanY * 74);
newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, widgetSpanX * 74);
onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions);
}
}
Bạn có thể cần phải thay đổi cách bạn xử lý bó rằng nếu bạn đang sử dụng MAX_HEIGHT hoặc MAX_WIDTH mà tôi không.
"hoặc lưu trữ chúng trong biến số nguyên bản đồ tĩnh" - điều này sẽ không đáng tin cậy vì quá trình của bạn có thể bị chấm dứt giữa chương trình phát sóng 'com.sec.android.widgetapp.APPWIDGET_RESIZE' và bất kỳ' onUpdate nào tiếp theo() 'gọi. Bây giờ, nó có thể làm việc ra rằng mã sửa đổi của Samsung sẽ kích hoạt một 'onUpdate()' rất ngắn sau khi 'com.sec.android.widgetapp.APPWIDGET_RESIZE', trong trường hợp các thành viên dữ liệu tĩnh có thể làm việc trong thực tế. – CommonsWare
@CommonsWare cảm ơn bạn, bạn có thể đúng. Nó không kích hoạt onUpdate tự động, vì vậy tôi phát sóng một bản cập nhật nếu kích thước mới không giống với kích thước mà tôi đã lưu trữ trong biến tĩnh. Đối với biến tĩnh: Ứng dụng được tự động bắt đầu gọi onReceive, vì vậy nó sẽ luôn đặt biến tĩnh đó. Nếu nó bị giết tại thời điểm đó, nó có thể gây ra bởi một vụ tai nạn và nó không nên sụp đổ anyways .. nếu không chúng tôi có thể không cập nhật các widget. Tui bỏ lỡ điều gì vậy? : | Nhân tiện, chúng tôi luôn có thể cập nhật trực tiếp từ chức năng đánh lừa, nếu chúng ta không quan tâm đến kích thước của nó thì có giống nhau hay không. – frankish