标签:live-wallpaper android-intent android-service android
我有一个显示图像的动态壁纸.我在活动中更改该图像.然后,我需要通知动态壁纸,以便它知道重新加载资源.
意图似乎是完美,简单的解决方案:
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。