Android 4.1 设置默认开机动态壁纸
2014-09-15 20:47
513 查看
最新在对Android 4.1做一些定制性的工作,刚好遇到了设置第三方动态壁纸为默认启动壁纸的问题,遂做笔记如下。
需要修改的文件为:
找到SourceCode/framework/base/core/res/res/values/config.xml中的:
<string name="default_wallpaper_component">@null</string>
将其中的@null修改内容为:
<string name="default_wallpaper_component" translatable="false">包名/动态壁纸服务名</string>
比如将默认壁纸更改为“青草晃动”的动态壁纸,则需要更改成如下代码:
<string name="default_wallpaper_component" translatable="false">com.android.wallpaper/com.android.wallpaper.grass.GrassWallpaper</string>
com.android.wallpaper 在 AndroidManifest 文件中的 packagename,com.android.wallpaper.grass.GrassWallpaper 在 AndroidManifest 文件中的 service name需要注意的是:静态的图片壁纸和动态壁纸是两个不同的系统,加载的时候是完全两套机制,静态图片通过 launcher 里面的一个 xml 文件配置来管理系统默认静态壁纸,动态壁纸则是通过 intent 机制向系统搜寻所有匹配 Activity,所以,这里的默认值为 null,而不是那个系统默认静态壁纸的地址,系统是读 config.xml 文件的设置。若为 null 才继续查找静态壁纸配置内容。设置之后没有效果的话,恢复下出厂设置即可。另外将需要用到第三方动态壁纸,提前预置到sytem/app中;
PS:
1.这里一定要记住,包名用AndroidManifest.xml中的,后面的service名也一定要跟AndroidManifest.xml中的一致,否则,会报ClassNotFoundException;
2.另预置的动态壁纸APK名称不要包含空格,否则还是会报ClassNotFoundException的,空格可以用下划线代替;
android app
androidwallpapermanager
1. The code is:
Java代码
private WallpaperManager mWallpaperManager = WallpaperManager.getInstance(this);
Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE);
intent.setClassName("com.android.wallpaper",
"com.android.wallpaper.galaxy.GalaxyWallpaper"); // you can set any live wall paper which you want
try {
mWallpaperManager.getIWallpaperManager().setWallpaperComponent(
intent.getComponent());
} catch (RemoteException e) {
e.printStackTrace();
// do nothing
} catch (RuntimeException e) {
e.printStackTrace();
}
2. And you must add the following permissions in your manifest:
Java代码
<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" />
<uses-permission android:name="android.permission.BIND_WALLPAPER" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
3. You must push your apk to /system/app. If not, it can’t work.
需要修改的文件为:
找到SourceCode/framework/base/core/res/res/values/config.xml中的:
<string name="default_wallpaper_component">@null</string>
将其中的@null修改内容为:
<string name="default_wallpaper_component" translatable="false">包名/动态壁纸服务名</string>
比如将默认壁纸更改为“青草晃动”的动态壁纸,则需要更改成如下代码:
<string name="default_wallpaper_component" translatable="false">com.android.wallpaper/com.android.wallpaper.grass.GrassWallpaper</string>
com.android.wallpaper 在 AndroidManifest 文件中的 packagename,com.android.wallpaper.grass.GrassWallpaper 在 AndroidManifest 文件中的 service name需要注意的是:静态的图片壁纸和动态壁纸是两个不同的系统,加载的时候是完全两套机制,静态图片通过 launcher 里面的一个 xml 文件配置来管理系统默认静态壁纸,动态壁纸则是通过 intent 机制向系统搜寻所有匹配 Activity,所以,这里的默认值为 null,而不是那个系统默认静态壁纸的地址,系统是读 config.xml 文件的设置。若为 null 才继续查找静态壁纸配置内容。设置之后没有效果的话,恢复下出厂设置即可。另外将需要用到第三方动态壁纸,提前预置到sytem/app中;
PS:
1.这里一定要记住,包名用AndroidManifest.xml中的,后面的service名也一定要跟AndroidManifest.xml中的一致,否则,会报ClassNotFoundException;
2.另预置的动态壁纸APK名称不要包含空格,否则还是会报ClassNotFoundException的,空格可以用下划线代替;
通过代码设置live wall paper
博客分类:android app
androidwallpapermanager
1. The code is:
Java代码
private WallpaperManager mWallpaperManager = WallpaperManager.getInstance(this);
Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE);
intent.setClassName("com.android.wallpaper",
"com.android.wallpaper.galaxy.GalaxyWallpaper"); // you can set any live wall paper which you want
try {
mWallpaperManager.getIWallpaperManager().setWallpaperComponent(
intent.getComponent());
} catch (RemoteException e) {
e.printStackTrace();
// do nothing
} catch (RuntimeException e) {
e.printStackTrace();
}
2. And you must add the following permissions in your manifest:
Java代码
<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" />
<uses-permission android:name="android.permission.BIND_WALLPAPER" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
3. You must push your apk to /system/app. If not, it can’t work.
相关文章推荐
- Android 4.1 设置默认开机动态壁纸
- Android 4.1 设置默认开机动态壁纸
- 设置Android默认壁纸为动态壁纸
- 设置Android默认壁纸为动态壁纸
- android 当系统存在多个Launcher时,如何设置开机自动进入默认的Launcher?
- android设置动态壁纸 (Wallpaper) 介绍
- android 当系统存在多个Launcher时,如何设置开机自动进入默认的Launcher?
- android 当系统存在多个Launcher时,如何设置开机自动进入默认的Launcher2
- 设置Android默认壁纸为动态壁纸
- 首次开机时的默认动态壁纸
- OK6410Android系统的开机默认设置
- Android系统存在多个Launcher时,设置开机进入默认的Launcher
- android 开机动画修改以及默认壁纸
- 设置开机动态壁纸
- android 当系统存在多个Launcher时,如何设置开机自动进入默认的Launcher2
- 设置Android默认壁纸为动态壁纸
- android 当系统存在多个Launcher时,如何设置开机自动进入默认的Launcher?
- 修改Tiny6410Android系统的开机默认设置
- android 当系统存在多个Launcher时,如何设置开机自动进入默认的Launcher?
- Android系统存在多个Launcher时,设置开机进入默认的Launcher