具有多个按钮的android小部件
我开发了一个android小部件,上面有多个按钮。它工作得很好,我第一次添加。但当我重新启动设备时,按钮不会启动。这就是我所做的 下面是xml配置具有多个按钮的android小部件,android,button,click,widget,Android,Button,Click,Widget,我开发了一个android小部件,上面有多个按钮。它工作得很好,我第一次添加。但当我重新启动设备时,按钮不会启动。这就是我所做的 下面是xml配置 <receiver android:name="com.islem.widget.MyWidgetMain" android:label="@string/app_name"> <intent-filter> <action android:name="android.appwidget.action.APPWI
<receiver android:name="com.islem.widget.MyWidgetMain" android:label="@string/app_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<!-- Broadcast Receiver that will also process our self created action -->
<action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RECEIVER1"/>
<action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RECEIVER2"/>
<action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RECEIVER3"/>
<action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RECEIVER4"/>
<action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RECEIVER5"/>
<action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RECEIVER6"/>
<action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RELOAD_ALARM"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/k_widget_provider" />
下面是onReceive方法
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("on onReceive");
Toast.makeText(context, "onReceive", Toast.LENGTH_SHORT).show();
// v1.5 fix that doesn't call onDelete Action
final String action = intent.getAction();
if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {
final int appWidgetId = intent.getExtras().getInt(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
this.onDeleted(context, new int[] { appWidgetId });
}
} else {
if (intent.getAction().equals(ACTION_WIDGET_RECEIVER1) || intent.getAction().equals(ACTION_WIDGET_RECEIVER2) ||
intent.getAction().equals(ACTION_WIDGET_RECEIVER3) || intent.getAction().equals(ACTION_WIDGET_RECEIVER4) ||
intent.getAction().equals(ACTION_WIDGET_RECEIVER5) || intent.getAction().equals(ACTION_WIDGET_RECEIVER6) ||
intent.getAction().equals(ACTION_WIDGET_RELOAD_ALARM)
) {
int appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
System.out.println("appWidgetId:" + appWidgetId + ", action:" + action);
}
super.onReceive(context, intent);
}
}
当手机重新启动时,它将调用
oneable
,而不是onUpdate
--更新--
这将获取由AppWigetProvider控制的所有ID。阅读更多关于的内容,我已经将onupdate的内容移动到一个方法中,并像下面那样从onEnabled和onupdate调用,但不起作用。我还可以在重新启动时看到更新日志。@Override public void onEnabled(Context Context){//TODO自动生成的方法stub super.onEnabled(Context);Toast.makeText(Context,“onEnabled”,Toast.LENGTH_SHORT).show();int[]appWidgetIds=AppWidgetManager.getInstance(Context).getAppWidgetIds(new ComponentName(Context,KalanWidgetMain.class));startWidget(context,AppWidgetManager.getInstance(context,appWidgetIds);}不要从onUpdate中删除,只需在ONEnabled中复制您已将小部件上载到某个地方,我需要查看其代码。如果您能提供帮助,它将非常有用。我是Android新手,正在尝试构建小部件。
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("on onReceive");
Toast.makeText(context, "onReceive", Toast.LENGTH_SHORT).show();
// v1.5 fix that doesn't call onDelete Action
final String action = intent.getAction();
if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {
final int appWidgetId = intent.getExtras().getInt(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
this.onDeleted(context, new int[] { appWidgetId });
}
} else {
if (intent.getAction().equals(ACTION_WIDGET_RECEIVER1) || intent.getAction().equals(ACTION_WIDGET_RECEIVER2) ||
intent.getAction().equals(ACTION_WIDGET_RECEIVER3) || intent.getAction().equals(ACTION_WIDGET_RECEIVER4) ||
intent.getAction().equals(ACTION_WIDGET_RECEIVER5) || intent.getAction().equals(ACTION_WIDGET_RECEIVER6) ||
intent.getAction().equals(ACTION_WIDGET_RELOAD_ALARM)
) {
int appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
System.out.println("appWidgetId:" + appWidgetId + ", action:" + action);
}
super.onReceive(context, intent);
}
}
int[] allids = AppWidgetManager
.getInstance(Context)
.getAppWidgetIds(new ComponentName(Context, YourAppWidgetProvider.class);