0
LiveWallpapers有权限BIND_WALLPAPER,它只允许系统绑定到它。当设备启动时,我想将livewallpaper服务设置为壁纸。为此,我编写了一个广播接收器,它在启动时意味着使用意图启动壁纸服务。活壁纸的组件被设置为意图的组成部分。目前这可以检测壁纸服务,但由于权限BIND_WALLPAPER无法设置。我的应用程序的清单包括如下广播接收机如何获得android系统启动livewallpaper服务?
<receiver android:name=".MyStartupIntentReceiver" android:permission="android.permission.BIND_WALLPAPER">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SET_WALLPAPER" />
<category android:name="android.intent.category.HOME"/>
</intent-filter>
</receiver>
广播接收机如下:
Intent ii = new Intent(Intent.ACTION_MAIN);
ii.addCategory(Intent.CATEGORY_HOME);
ii.setComponent(new ComponentName("com.example.android.livecubes","com.example.android.livecubes.cube1.CubeWallpaper1"));
context.startService(ii);
香港专业教育学院还试图用action.SET_WALLPAPER ...类别上面:启动/默认,但一切都抛错误权限被拒绝:需要bind_wallpaper。该许可在服务端和接收端都存在。如何在无需选择器/动态壁纸选取器的情况下设置启动时的动态壁纸?
谢谢您的回复。可以通过看看android操作系统如何做到这一点吗?我想看看android os源代码,你有什么建议吗? – SDLBING 2011-05-13 04:30:30
@SDLBING我的理解是,这对于应用程序员来说是不可能的。它不是“公共”API的一部分。换句话说,它需要我们无法获得的“许可”。你可以看看选择器是如何工作的,但是你不能复制它的方法。我拥有的最佳“证明”是我从未见过任何人获得这项工作。例如,aniPet水族馆动态壁纸附带了一个应用程序,以方便设置壁纸,但它所做的只是启动选择器。 – 2011-05-13 07:50:46
@SDLBING源代码在这里:http://android.git.kernel.org/?p=platform/packages/wallpapers/LivePicker.git;a=tree;f=src/com/android/wallpaper/livepicker – 2011-05-13 07:56:55