| package com.android.wallpaperpicker.common; |
| |
| import android.app.WallpaperManager; |
| import android.content.Context; |
| import android.graphics.Rect; |
| |
| import java.io.IOException; |
| import java.io.InputStream; |
| import java.lang.reflect.InvocationTargetException; |
| import java.lang.reflect.Method; |
| |
| public class WallpaperManagerCompatVN extends WallpaperManagerCompatV16 { |
| public WallpaperManagerCompatVN(Context context) { |
| super(context); |
| } |
| |
| @Override |
| public void setStream(final InputStream data, Rect visibleCropHint, boolean allowBackup, |
| int whichWallpaper) throws IOException { |
| try { |
| // TODO: use mWallpaperManager.setStream(data, visibleCropHint, allowBackup, which) |
| // without needing reflection. |
| Method setStream = WallpaperManager.class.getMethod("setStream", InputStream.class, |
| Rect.class, boolean.class, int.class); |
| setStream.invoke(mWallpaperManager, data, visibleCropHint, allowBackup, whichWallpaper); |
| } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { |
| // Fall back to previous implementation (set both) |
| super.setStream(data, visibleCropHint, allowBackup, whichWallpaper); |
| } |
| } |
| |
| @Override |
| public void clear(int whichWallpaper) throws IOException { |
| try { |
| // TODO: use mWallpaperManager.clear(whichWallpaper) without needing reflection. |
| Method clear = WallpaperManager.class.getMethod("clear", int.class); |
| clear.invoke(mWallpaperManager, whichWallpaper); |
| } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { |
| // Fall back to previous implementation (set both) |
| super.clear(whichWallpaper); |
| } |
| } |
| } |