2015-10-06 12 views
7

Tôi gặp phải hành vi đáng sợ trên một số thiết bị khi thêm phiên bản appwidget mới trên màn hình chính.AppWidget: Ví dụ không được hiển thị sau khi hoạt động cấu hình kết thúc trên một số thiết bị

Tôi đã có ứng dụng AppWidget với hoạt động định cấu hình. Như đã nói trong bản cập nhật hướng dẫn của appwidget tôi phải tự mình làm.

public static void updateWidgetAndSendIntent (Activity activity, int mAppWidgetId, boolean isUpdate) { 
    updateWidgets(activity); 
    if (!isUpdate) { 
     Intent resultIntent = new Intent(); 
     resultIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); 
     activity.setResult(Activity.RESULT_OK, resultIntent); 
     activity.finish(); 
    } 
} 

    public static void updateWidgets(Context context) { 
    new ManagerUpdateWidget(context).updateAllWidgetInstances(); 
} 

ManagerUpdateWidget.java

public void updateAllWidgetInstances() { 

    Bitmap widget = getCustomView(context); 

    for (int widgetId : appWidgetIds) { 
     updateCurrentInstance(widgetId, widget); 
    } 
} 

Thực tế là trên Samsung Galaxy Note 2 (GT N7100) với Android 4.4.2 mọi thứ đều Ok, nhưng trên Samsung Galaxy Note 3 (SM-N900) với Android 5.0, tôi đã có appwidget "phantom", không phải appawidget thực trên màn hình chính mà là "phantom" khi bạn không thể thấy appwidget trên màn hình nhưng bên trong appwidget ứng dụng của bạn tồn tại với ID và cập nhật thông thường. Tôi đã thử nghiệm ứng dụng của mình trên trình giả lập genymotion (Android 4.3 và 5.0) nhưng mọi thứ đều OK.

Vui lòng đề xuất cho tôi cách khắc phục lỗi đáng sợ này.

+0

Bạn có thể làm rõ ý nghĩa của appwidget "ma" không? –

+0

[This] (http://stackoverflow.com/a/8866791/4600792) câu trả lời có thể giúp bạn. –

+0

đây là một lỗi khác, không phải của tôi. Tôi thấy tiện ích của mình trong "Danh sách tiện ích con" và có thể chạy Hoạt động cấu hình nhưng sau khi cấu hình xong, tôi không thấy phiên bản mới trên màn hình chính. Trong trường hợp của tôi nó chỉ happends trên Note 3, trên Note 2 chạy là ok –

Trả lời

0

Xử lý các tiện ích "ma" là một cơn ác mộng. Bạn có thể cập nhật tất cả các phiên bản bằng cách sử dụng updateAppWidget (ComponentName provider, RemoteViews views) không?
Theo tài liệu, phương pháp này sẽ thiết lập RemoteViews để sử dụng cho tất cả các phiên bản AppWidget cho nhà cung cấp AppWidget được cung cấp.

AppWidgetManager manager = AppWidgetManager.getInstance(context); 
ComponentName component = new ComponentName(context, MyAppWidgetProvider.class); 
manager.updateAppWidget(component, remoteViews); 
+0

bên trong updateCurrentInstance-phương pháp tôi đã thực hiện mà bạn đề nghị ... Nó không giúp tôi –

Các vấn đề liên quan