widget @app setImageViewUri não atualiza a imagem

Tenho um widget de aplicativo, que contém apenas uma visualização de imagem. redesenho essa imagem e a armazeno como png na memória privada dos aplicativos e, em seguida, defino a imagem dos RemoteViews com o uri (widget.setImageViewUri (R.id.widget_icon, uri)) em vez de enviar o bitmap, porque é muito raro situações que recebo !!! FALHA NA TRANSAÇÃO DA LINHA !!!

o problema é que, conforme a imagem muda com o tempo, a imagem do widget não muda. Eu verifiquei o png salvo com o root explorer e ele é atualizado corretamente. mas a imagem correta não é exibida. cada widget mostra a imagem a partir do momento em que foi adicionada à tela inicial. se eu usar setImageViewBitmap (...), ele funcionará corretamente, exceto as raras transações com falha no fichári

i atualize o widget de um serviço com o método abaixo. ele não funciona no android 2.3.7 e também com o emulador executando o 2.2. qual poderia ser o problema? está de alguma forma armazenado em cache?

public void updateWidget(Context context) {
  // redraws the widget's image
  updateIcon();

  OutputStream stream;
  try {
    stream = context.openFileOutput("icon.png", Context.MODE_WORLD_READABLE);
  }
  catch (FileNotFoundException ex) {
    ex.printStackTrace();
    return;
  }

  m_Icon.compress(CompressFormat.PNG, 100, stream);

  try {
    stream.close();
  }
  catch (IOException ex) {
    ex.printStackTrace();
  }

  AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
  int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, WidgetProvider.class));

  Intent intent = new Intent(context, MyDialog.class);
  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  PendingIntent clickIntent = PendingIntent.getActivity(context, 0, intent, 0);

  File file = new File(context.getFilesDir().getAbsolutePath() + File.separator + "icon.png");
//      Uri uri = Uri.fromFile(file);

  // update all widgets on home screen
  for (int wid : appWidgetIds) {
    RemoteViews widget = new RemoteViews(context.getPackageName(), R.layout.widget);
    widget.setOnClickPendingIntent(R.id.widget_layout, clickIntent);

    // === EDIT ===
    // Uri.fromFile(file); does not work correctly on android 2.1, only 2.2 and up
    // widget's image will disappear
//        widget.setImageViewUri(R.id.widget_icon, uri);
    widget.setImageViewUri(R.id.widget_icon, Uri.parse(file.getPath()));

    intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, wid);

    appWidgetManager.updateAppWidget(wid, widget);
  }
}

EDITAR Eu também tentei um ContentProvider personalizado e defini "content: // ..." uri, mas com o mesmo resultado. o widget mostra a imagem a partir do momento em que foi adicionada à tela inicial e não é atualizada com o tempo.

logcat não mostra nenhum err

questionAnswers(3)

yourAnswerToTheQuestion