У меня есть виджет Android (расширяет класс AppWidgetProvider
), и я пытаюсь получить доступ к контексту приложения из прослушивателя службы. Мне нужно получить доступ к контексту, чтобы я мог изменить обои приложения. Вот ошибка, которую я получаю: Cannot refer to a non-final variable context inside an inner class defined in a different method
. Я попробовал предлагаемое исправление, чтобы изменить контекст модификатора на Final, но созданное растровое изображение возвращается как ноль. Может кто-нибудь предложить подходящий способ справиться с этим? Вот фрагмент кода:
private void startWallpaperService(Context context) {
Intent wpIntent = new Intent(context, Wallpaper_Service.class);
context.startService(wpIntent);
Wallpaper_Service wpSrv = Wallpaper_Service.getService();
if(wpSrv != null) {
Log.i(TAG, "Wallpaper Service is not null");
Wallpaper_Service.repetitionInterval=30*1000;
wpSrv.setWallpaperListener(new Wallpaper_Service.WallpaperListener() {
@Override
public void onWallpaperUpdate(int imageId) {
if(wpm == null)
Log.w(TAG, "wpm or context is null");
else {
Bitmap background = BitmapFactory.decodeResource(context.getResources(), R.drawable.image1); // I get a syntax error here
if(background==null){
Log.w(TAG, "background is null");
}else{
try {
wpm.setBitmap(background);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
});
} else {
Log.e(TAG, "Wallpaper Service failed");
}
}