der Code scheint gut, aber nicht sicher, der Grund, warum die onreceived Funktion von AppWidgetProvider Absicht Aktion null und keine zusätzlichen Daten, die die App setzt.android Homescreen Widget AppWidgetProvider onreceived Funktionsabsicht Aktion und Extras sind weg/null
AppWidgetProvider Code:
public class Widget_2_6 extends AppWidgetProvider{
private AlarmManager alarm;
@Override
public void onReceive(Context context, Intent intent)
{
Log.e("onReceive -- Widget_2_6", "onReceive -- Widget_2_6: action: " + intent.getAction());
boolean from_boot = intent.getBooleanExtra(BootCompleteBroadcastReceiver.FROM_BOOT, false);
if(from_boot)
{
Log.e("onReceive -- Widget_2_6", "onReceive -- Widget_2_6: onupdate start");
Log.e("onReceive -- Widget_2_6", "onReceive -- Widget_2_6: onupdate end");
}
else
{
Log.e("onReceive -- Widget_2_6", "onReceive -- Widget_2_6 not from boot: onupdate start");
Log.e("onReceive -- Widget_2_6", "onReceive -- Widget_2_6 not from boot: onupdate end");
}
super.onReceive(context, intent);
}
BootCompleteBroadcastReceiver:
public final static String FROM_BOOT = "FROM_BOOT";
cn = new ComponentName(context, Widget_2_6.class);
Intent intent_widget_2_6 = new Intent(context, Widget_2_6.class);
intent.setAction(INTENT_FROM_BOOT);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, manager.getAppWidgetIds(cn));
intent.putExtra(FROM_BOOT, true);
context.sendBroadcast(intent_widget_2_6);
AndroidManifest.xml:
<receiver android:name="com.example.linktogoogleplay.Widget_2_6">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
<action android:name="com.example.linktogoogleplay.FROM_BOOT"></action>
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/my_widget_provider_2_6" />
</receiver>
Ich versuchte, die android.appwidget.action.APPWIDGET_UPDATE als Absicht Aktion verwenden, aber nach wie vor NULL-Aktion erhalten und keine zusätzlichen Daten, die die App setzt.
(HINWEIS :) muss Widget auf die neuesten Daten beim Booten aktualisieren und nicht die alten Daten verwenden. auch derselbe bootboradcast-Empfänger wird ausgeführt, wenn die Zeit geändert wird (da er vom Server aktuell sein muss)
der bootBroadcastreceiver funktioniert, da er die timechange-Aktion erhalten kann, nur er appwidgetprovider-Teil funktioniert nicht.
Bitte lassen Sie mir wissen, ob etwas fehlt.