我遇到的问题与之前提出的问题非常相似,但不完全相同。参考文献:1,2,3,4
我已经编写了一个最小的Android小工具,以及APPWIDGET_DELETED
和APPWIDGET_DISABLED
永远不会被接收。
在上面的参考文献1和2中,提出的解决方案是实现onReceive
并明确寻找这些意图。但是,我在中插入了一个日志调用onReceive
,并且可以确认这些意图都没有出现,但是APPWIDGET_UPDATE
并APPWIDGET_ENABLED
没有按预期出现在日志中。为了再次确认这一点,我还插入了onDeleted
和的最小实现onDisabled
,它们的主体仅由super
对它们的断点的调用组成,而这些都从未实现。
参考文献3似乎可以通过简单地卸载并重新安装他的应用程序来解决他的问题,但这对我而言无效。实际上,我已经在多个仿真器映像以及实际设备上进行了尝试,其中一些是新鲜的,以前从未使用过以前的版本,并且仍然出现此问题。
根据参考文献中的回答说这些变通办法对他们有效,并且使用了onDeleted
和onDisabled
方法的大量在线教程都没有提及它们实际上并不起作用,我将假定我一定做错了事,这不是Android中的错误。
这是我的最小清单文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.testwidgets">
<application android:allowBackup="true"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme">
<receiver android:label="Test Widget"
android:name="com.test.testwidgets.TestWidgetProvider"
android:exported="false">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/test_widget_info"/>
</receiver>
</application>
</manifest>
这是我最小的Java来源:
public class TestWidgetProvider extends AppWidgetProvider {
@Override
public void onReceive(Context context, Intent intent) {
Log.w("Schedule", "On receive " + intent.getAction());
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int widgetId : appWidgetIds) {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.test_widget);
appWidgetManager.updateAppWidget(widgetId, views);
}
}
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
}
}
一AppWidgetProvider
要导出的需求,从而使核心操作系统进程坐标应用小部件(主机和提供者之间)可以谈论它。因此,android:exported="false"
是不适当的。
老实说,我本来希望与提供程序无关的所有事情,而不仅仅是一些事件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句