android-从应用程序向小部件发送数据

android-从应用程序向小部件发送数据,第1张

概述我被困在一个特殊的场景中.用户从应用程序更新时间后,我需要立即更新我的小部件.我确实通过发送IntentExtras数据来尝试广播,但是没有这样做.当前,我的数据存储在AppWidgetProvider中,我需要将此数据发送到服务公共类CountdownWidget扩展了AppWidgetProvider{    //Shared

我被困在一个特殊的场景中.用户从应用程序更新时间后,我需要立即更新我的小部件.我确实通过发送Intent Extras数据来尝试广播,但是没有这样做.当前,我的数据存储在appwidgetprovider中,我需要将此数据发送到服务

公共类CountdownWidget扩展了appwidgetprovider {
    // SharedPreferences userDefaults;

// update rate in millisecondspublic static final int UPDATE_RATE = 1800000; // 30 minutepublic static String nameOne = "";@OverrIDepublic voID onDeleted(Context context, int[] appWidgetIDs) {    for (int appWidgetID : appWidgetIDs) {        setAlarm(context, appWidgetID, -1);    }    super.onDeleted(context, appWidgetIDs);}@OverrIDepublic voID onReceive(Context context, Intent intent) {    // Todo auto-generated method stub    Bundle extras = intent.getExtras();    nameOne = extras.getString("name_ONE");    Log.e("name: ", nameOne);    super.onReceive(context, intent);}@OverrIDepublic voID onUpdate(Context context, AppWidgetManager appWidgetManager,        int[] appWidgetIDs) {    for (int appWidgetID : appWidgetIDs) {        setAlarm(context, appWidgetID, UPDATE_RATE);    }    super.onUpdate(context, appWidgetManager, appWidgetIDs);}public static voID setAlarm(Context context, int appWidgetID, int updaterate) {    // Log.e("", "Updating Widget Service");    PendingIntent newPending = makeControlPendingIntent(context,            CountdownService.UPDATE, appWidgetID);    AlarmManager alarms = (AlarmManager) context            .getSystemService(Context.ALARM_SERVICE);    if (updaterate >= 0) {        alarms.setRepeating(AlarmManager.ELAPSED_REALTIME,                SystemClock.elapsedRealtime(), updaterate, newPending);    } else {        // on a negative updaterate stop the refreshing        alarms.cancel(newPending);    }}public static PendingIntent makeControlPendingIntent(Context context,        String command, int appWidgetID) {    Intent active = new Intent(context, CountdownService.class);    active.setAction(command);    active.putExtra(AppWidgetManager.EXTRA_APPWidget_ID, appWidgetID);    // this Uri data is to make the PendingIntent unique, so it wont be    // updated by FLAG_UPDATE_CURRENT    // so if there are multiple Widget instances they wont overrIDe each    // other    Uri data = Uri.withAppendedpath(            Uri.parse("countdownWidget://Widget/ID/#" + command                    + appWidgetID), String.valueOf(appWidgetID));    active.setData(data);    return (PendingIntent.getService(context, 0, active,            PendingIntent.FLAG_UPDATE_CURRENT));}

}

如您所见,nameOne是一个静态变量.我可以使用getExtras在onReceive方法上接收数据,但是我无法将这些数据传递给CountdownService服务.

我确实尝试了CountdownWidget.nameOne,但仍然无法满足服务中的数据要求.

任何帮助将不胜感激.

解决方法:

您必须创建一个更新小部件的服务,选中this tutorial(第4部分),您可以尝试通过静态变量传输数据.

总结

以上是内存溢出为你收集整理的android-从应用程序向小部件发送数据全部内容,希望文章能够帮你解决android-从应用程序向小部件发送数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1093861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存