2011-05-02 5 views
0

내 앱이 위젯이며 배경이 imageView입니다. WidgetProvider의의 onUpdate() 메소드에 는,이 메소드를 호출이 이미지 뷰 내부의 sdcard에서 비트 맵을 넣어 :SD 카드 장착/마운트 해제시 위젯의 비트 맵 배경이 사라짐

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 마운트 항상 위젯이 비트 맵을 상실하고, 이미지 뷰이다 레이아웃 선언 (src = R.drawable.defaultbackground)에서 발견 된 defaut drawable을 얻으면 내 위젯이 다시로드 된 것처럼 보입니다. 이것을 추적하려면 onReceive() 메서드를 사용합니다. Log.i (Constants.DEBUG_TAG, "RECEIVE INTENT :"+ intent.getAction()); 하지만 logcat에는 아무 것도 나타나지 않습니다 ... 나는 ACTION_APPWIDGET_UPDATE 액션을 사용하여 의도 한 것이지만, 아무 것도 기대하지 않았습니다.

또한 내 비트 맵에 recycle()을 호출하려고했는데 ... 문제가 해결되지 않습니다.

나는

어떤 도움을 감사 할 것 ... 마운트 해제/설치하는 동안 로그 캣을보고 이상한 오류가 발생하지 않습니다! Christophe.

답변

1

솔루션 마찬가지로 위젯은 SD 카드로 이동해서는 안됩니다 방법 기타 실제 솔루션과 관련이없는 노트 here

... 이 위젯은 또한 SD 카드에 자원을 참조하지 않아야합니다. 위젯은 자주 다시로드 할 수 있으며 해당 자원에 대한 액세스가 필요합니다. 가능한 해결책은 이미지 파일을 위젯/데이터 디렉토리의 로컬 파일 시스템에 저장하는 것입니다.

+0

감사합니다. 하지만 그것은 문제를 해결하지 못합니다. 테스트를 위해서 내부 스토리지에 PNG를 쓰려고했는데,이 내부 저장소 파일에서 새로운 비트 맵을 만들었지 만. 문제는 여기에 있습니다 :-(어떤 생각이 든?) –

+0

죄송합니다. 다른 해결책을 찾아 보겠습니다. 사용중인 Android 버전은 무엇입니까? http://code.google.com/p/android/issues/detail?id=8489 –

+0

맞습니까? !!!!!! –

관련 문제