Виджет теряет свой растровый фон, когда SD-карта установлена ​​/ отключена - PullRequest
0 голосов
/ 02 мая 2011

Мое приложение - это виджет, фон которого - imageView. В методе onUpdate () объекта WidgetProvider я поместил растровое изображение из sdcard внутри этого imageView, вызывая этот метод:

public static void changeSkinWidget(Context context,String imageBackgroundPath) throws IOException{
     RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.widget);
     BitmapFactory.Options options = new BitmapFactory.Options();
     options.inSampleSize = 2;

     Log.i(Constants.DebugTag,"changeSkinWidget receive new path " +imageBackgroundPath);

     //Change Background Skin :
     FileInputStream is;
    try {
        is = new FileInputStream(new File(imageBackgroundPath
                + "background.png"));
        BufferedInputStream bis = new BufferedInputStream(is);
        Bitmap bm = BitmapFactory.decodeStream(is);
        views.setImageViewBitmap(R.id.ImageBackground01, bm);
        ComponentName thisWidget = new ComponentName(context,
                MyWidget.class);
        AppWidgetManager manager = AppWidgetManager.getInstance(context);
        manager.updateAppWidget(thisWidget, views);     
        bis.close();
        is.close();

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 

}

Проблема в том, что я всегда монтирую / размонтирую SDCARD, виджет теряет это растровое изображение, а ImageView получает нарисованное по умолчанию изображение, которое можно найти в объявлении макета (src = R.drawable.defaultbackground), и кажется, что мой виджет перезагружается. Чтобы отследить это, я включил метод onReceive (): Log.i (Constants.DEBUG_TAG, "ПОЛУЧИТЬ ИНТЕНТ:" + intent.getAction ()); Но в logcat ничего не появляется ... Я ожидал, может быть, намерение с ACTION_APPWIDGET_UPDATE действие, но ничего.

Я также пытался вызвать recycle () для своего растрового изображения ... это не решает проблему.

Я не вижу странной ошибки при просмотре logcat при монтировании / размонтировании ...

Любая помощь будет признательна! Christophe.

1 Ответ

1 голос
/ 02 мая 2011

Решение - здесь

Разные заметки, не связанные с фактическим решением ... Подобно тому, как виджеты никогда не следует перемещать на SD-карту, виджеты также не должны ссылаться на ресурсы на SD-карте.,Виджеты можно часто перезагружать, и им потребуется доступ к этому ресурсу.Возможное решение - сохранить файл изображения в локальной файловой системе в каталоге widgets / data.

...