魅族Flyme设置锁屏壁纸

前段时间帮别人做一个针对魅族手机的壁纸应用,才发现Android SDK没有提供设置锁屏壁纸的API,只有设置桌面壁纸的API。但是,其它很多非原生Android系统都可以设置锁屏壁纸的。

既然是做针对魅族手机的,那么就乖乖研究一下Flyme OS吧,最后通过反编译找到其设置方法。在Flyme OS 3.4.5中测试成功。代码如下,仅供参考学习。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void setLocksreenWallpaper(String imageFilePath) throws NoSuchMethodException,
IllegalArgumentException, IllegalAccessException,
InvocationTargetException, IOException {

WallpaperManager manager = WallpaperManager.getInstance(this);
Class[] arrayOfClass = new Class[1];
arrayOfClass[0] = InputStream.class;
Method method = WallpaperManager.class.getMethod(
"setStreamToLockWallpaper", arrayOfClass);
FileInputStream localFileInputStream = new FileInputStream(imageFilePath);
Object[] arrayOfObject = new Object[1];
arrayOfObject[0] = localFileInputStream;
method.invoke(manager, arrayOfObject);
localFileInputStream.close();
}