android-从和向WallpaperService启动意图
作者:互联网
我有一个显示图像的动态壁纸.我在活动中更改该图像.然后,我需要通知动态壁纸,以便它知道重新加载资源.
意图似乎是完美,简单的解决方案:
Intent intent = new Intent(MyActivity.this, MyWallpaperService.class);
startService(intent);
我和MyWallpaperService中
@Override
public int onStartCommand (Intent intent, int flags, int startId) {...}
我还需要知道,在另一项服务中,用户何时点击屏幕.我使用与发送和接收意图完全相同的机制.
一切在Android 4.0设备和仿真器上都能正常运行.
但是我在Android 2.2和2.3.3模拟器上进行了测试,并得到以下错误:
java.lang.SecurityException: Not allowed to start service Intent { cmp=com.domain.name/.liveWallpaper.MyWallpaperService } without permission android.permission.BIND_WALLPAPER
我的清单在service标签内包含正确的android:permission:
<service
android:name=".liveWallpaper.MyWallpaperService"
android:label="@string/app_name"
android:permission="android.permission.BIND_WALLPAPER" >
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService" />
</intent-filter>
<meta-data
android:name="android.service.wallpaper"
android:resource="@xml/livewallpaper_data" />
</service>
为什么仅在旧版本(Android 2.2和2.3.3)上会出现此错误?是否禁止或建议将Intent发送到WallpaperService?它与只有系统才能绑定到具有BIND_WALLPAPER权限的服务有关吗?
最后,如果意图不起作用,替代的简单解决方案是什么?
解决方法:
尝试向清单文件中的服务添加权限,如下所示:
<service android:name=".LiveWallpaper"
android:label="@string/app_name"
android:icon="@drawable/icon"
android:permission="android.permission.BIND_WALLPAPER">
希望有帮助
标签:live-wallpaper,android-intent,android-service,android 来源: https://codeday.me/bug/20191030/1964157.html