我想在Jelly Bean(Nexus 7,Android 4.2.1)的锁定屏幕上启用我的小部件
我的问题是,当您从锁定屏幕中删除小部件时,永远不会调用onReceive()
,创建与添加/删除它一样多的幽灵小部件。
它在主屏幕中工作正常(您删除一个小部件,调用onReceive()
,然后onDelete()
,如果它是最后一个小部件onDisable()
),但在锁定屏幕上不起作用。
在锁定屏幕上,onReceive()
需要 APPWIDGET_ENABLED
,APPWIDGET_UPDATE
和APPWIDGET_UPDATE_OPTIONS
,仅此而已。
要在锁定屏幕中放置小部件,您只需将android:widgetCategory="home_screen|keyguard"
添加到小部件并在锁定屏幕上进行测试
对我的果冻豆锁屏小部件有同样的体验。 onReceive(),onDelete()和onDIsable()永远不会被调用,即使你从锁定屏幕中删除它,小部件也会不断更新。在我的Galaxy Nexus(4.2.1)和Nexus 7(4.2.1)上相同的行为。幽灵小部件在重新启动后消失。
也许与内置锁屏小部件的行为有关。删除时钟后,时钟将重新出现。
希望这在文档中得到澄清。
试试这个
"需要导出AppWidgetProvider,以便协调应用程序小部件(在主机和提供商之间)的核心操作系统进程可以与之通信。因此,android:exported="false"
是不建议的。
老实说,我本来不希望与提供商合作,而不仅仅是一些活动。
共享资源软件
https://stackoverflow.com/a/22719694/4683601
<receiver
android:name=".AppWidgetBarProvider"
android:exported="true"
>
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/appwidget_bar_info" />
</receiver>