Articles of 部件

android appwidget listview不更新

我写了一个AppWidget,它显示ContentProvider的一个ListView中的一些数据,但是我更新时遇到了麻烦。 当我第一次创build小部件时,它会正确填充,但在AlarmManager的PendingIntent到达后,ListView上不会发生更新。 代码如下: Intent update = new Intent(context, MenuWidgetProvider.class); update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds); PendingIntent pIUpdate = PendingIntent.getBroadcast(context, 0, update, 0); ((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)). set(AlarmManager.RTC, nextTime.toMillis(false), pIUpdate); Log.d(TAG, "updating: " + dmt.mealName); for (int i = 0; i < appWidgetIds.length; ++i) { int widgetId = appWidgetIds[i]; RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_menu); // meal name views.setTextViewText(R.id.widget_locname, prefs.getString(PREF_WIDGET_LOCNAME, "")); […]

在通过AppWidgetManager更新我自己的小部件的时候显示的电源控制部件有什么问题?

当通过AppWidgetManager.updateAppWidget手动更新我的小部件时遇到问题。 平台是Android 2.2。 代码如下: 我将这个小部件另外声明给Manifest中的现有Activity: <receiver android:name=".Widget" android:label="@string/app_name"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget" /> </receiver> 小部件类在Widget.java中声明: public class Widget extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { int use_static_ip; RemoteViews remoteViews; try { use_static_ip = Settings.System.getInt(context.getContentResolver(), Settings.System.WIFI_USE_STATIC_IP); if (use_static_ip == 0) { //DHCP remoteViews = new RemoteViews(context.getPackageName(), […]

用于更新小部件的AsyncTask – 如何访问onPostExecute()中的textviews?

以下情况: 我有一个app widget ,从一个url轮询数据,并更新与parsed html小部件。 在pre-honeycomb设备上,这可以通过service来完成,而不使用单独的线程。 现在,在ICS上,这已经改变,并且需要一个ASyncThread 。 访问我使用的Widget-Updater-Service的TextViews RemoteViews remoteViews = new RemoteViews(getApplicationContext().getPackageName(), R.layout.widget_layout); remoteViews.setTextViewText(R.id.TextView1,"test"); 但是这在ASyncThread似乎不起作用。 难道呢,主线服务已经被终止,当线程正在尝试改变textview ? 任何想法解决这个问题?

如何正确地更新Android 8.0中的一个小部件 – 奥利奥 – API 26

假设我有一个targetSDKVersion设置为26的应用程序的小部件。这个小部件需要100ms和10s之间的更新。 大部分时间在1秒以下。 在Android O之前,如果在我的AppWidgetProvider上调用onUpdate(),我可以启动后台服务来更新这个小部件。 但是,如果您尝试该行为,Android O将返回IllegalStateException。 开始一个前台服务的显而易见的解决scheme似乎是一个极端的措施,将在99%的时间内完成。 可能的解决scheme 开始一个前台服务来更新小部件。 惹恼用户,通知将在10s内消失。 使用JobScheduler尽可能快地安排工作。 您的小部件可能会或可能不会更新一段时间。 尝试在广播接收机中完成这项工作。 locking任何其他应用程序的UI线程。 呸。 尝试在小工具接收器中工作。 locking任何其他应用程序的UI线程。 呸。 滥用GCM来获得后台服务运行。 很多工作,感觉哈克。 我个人不喜欢上述任何解决scheme。 希望我失去了一些东西。 (更令人沮丧的是,我的应用程序已经通过调用onUpdate()系统加载到内存中,我没有看到如何加载我的应用程序到内存中调用onUpdate(),但是不给我的应用程序1s更新closures的部件UI线程保存任何电池寿命。)

如何创build一个Android小部件的选项?

我正在开发我的笔记应用程序的小部件。 我想存档的内容与colorNote widget相似: select笔记应用程序小部件 允许用户select存储在Sqlite可用注释列表 显示选定的笔记内容的小部件。 我可以显示简单的小部件来显示我想要的简单消息,但是我想要做的是允许用户从注释列表中select指定的注释作为小部件的内容。 我很难find相关的资源,如果你知道某个search关键字,让我知道,我会做我自己的研究。

与ListView的Android小部件不会加载项目correclty

我试图用ListView为我的应用程序实现一个小部件。 为了做到这一点,我已经在以下所有链接中逐步进行了操作: Android应用程序小部件与列表视图 在集合中使用App Widget – developer.android.com/guide/topics/appwidgets/index.html#collections 在Android的主屏幕小部件填充ListView – efreedom我国技术问答我国技术问答关于我们| 隐私权政策|联系我们这页的自动翻译英文 但是,当我将小部件放置在主屏幕上时,列表项的数量与我在数据库中拥有的项目数量相匹配,但每行的视图不会更新,并且一直显示“Loading …”(如图所示这个屏幕截图 ) 我不理解缺less的东西。 提前感谢您的帮助! 这是我的AppWidgetProvider: package com.appro.illbeback; import com.appro.illbeback.R; import com.appro.illbeback.data.CallsDataSrouce; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.widget.RemoteViews; public class CallsAppWidgetProvider extends AppWidgetProvider { private CallsDataSrouce dataSource; @SuppressWarnings("deprecation") @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) […]

如何传递数据并从Widget中打开一个Activity? 产品

在我实现RemoteViewsFactory ListProvider类中,我提出了下面的代码: @Override public RemoteViews getViewAt(int position) { RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.list_row); rv.setTextViewText(R.id.heading, merch_name); rv.setTextViewText(R.id.content, teaser); Bundle extras = new Bundle(); extras.putInt(WidgetProvider.EXTRA_ITEM, position); extras.putString(WidgetProvider.MERCHANT_ITEM, mWidgetItems.get(position).merchant_id); Intent fillInIntent = new Intent(); fillInIntent.putExtras(extras); rv.setOnClickFillInIntent(R.id.llRow, fillInIntent); return rv; } 我把我的onReceive的WidgetProvider日志,当我点击,它有正确的ID,但打开活动后,它没有正确的ID放在extras 。 有时间,它不打开我提供的Activity ,只是打开我的MainActivity 。 当我从recently open app删除我的应用recently open app ,然后使用widget时会发生这种情况 这是我的WidgetProvider onReceive代码 public class WidgetProvider extends […]

更新大量小部件位图时避免FAILED BINDER TRANSACTION错误

我正在更新我的AppWidget中的RemoteViews时遇到错误。 .. !!! 失败的粘合剂交易! 这是因为对RemoteView的所有更改都是序列化的(例如setInt和setImageViewBitmap)。 位图也被串行化成一个内部包。 不幸的是,这个包有一个非常小的尺寸限制。 我不能使用setImageResource,因为我希望允许用户下载小部件的皮肤。 任何人都可以推荐一个解决这个问题的方法? 我已经为每个小部件的实例使用了一个“新”RemoteViews对象,但是一个实例包含了太多的更新。 谢谢!

如何以编程方式更改小部件布局背景

以这个小部件布局为例(我整个小部件布局的一部分) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/widget_background_dark_4x2" android:orientation="horizontal" android:id="@+id/widget_main" > 我希望能够更改基于用户select使用的背景绘制。 例如使用远程视图,我可以通过做这样的事情来更新textview的颜色: remoteView.setTextColor(R.id.text_view1, Color.WHITE); 不过,我一直觉得很难为我的线性布局的背景相同。 我做了这个: remoteView.setBitmap(R.id.widget_main, "setBackgroundDrawable", ((BitmapDrawable) context.getResources().getDrawable(R.drawable.widget_background_dark_4x2)).getBitmap()); 但是我得到以下错误: 06-01 22:46:36.305: WARN/AppWidgetHostView(244): android.widget.RemoteViews$ActionException: view: android.widget.LinearLayout doesn't have method: setBackgroundDrawable(android.graphics.Bitmap) 任何帮助,将不胜感激。 “编辑”也试过这个: Bitmap bitmap = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.widget_background_light_4x2)).getBitmap(); remoteView.setBitmap(R.id.widget_main, "setBackgroundDrawable",bitmap ); 但不幸的是得到以下错误: 06-01 23:11:26.039: WARN/AppWidgetHostView(244): updateAppWidget couldn't find any view, using error view 06-01 23:11:26.039: WARN/AppWidgetHostView(244): android.widget.RemoteViews$ActionException: […]

Android:如何防止一个活动的多个实例从一个小部件启动?

重现问题的步骤: 用户启动我的应用程序(根活动的名称:“mainActivity”)=> mainActivity的实例A. 他按下主页button(mainActivity在后台运行) 他安装相对这个应用程序的部件 他点击widget =>显示mainActivity的新实例(实例B) 他点击后退button:用户回到活动A(我不想要的!活动B应该closures(实际上,应该closures整个应用程序)) 你知道如何避免这个问题吗? (我已经看到了一些类似的问题,但不是我想要的, 谢谢 !!!! 代码: public class MyWidgetProvider extends AppWidgetProvider { public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // Build the intent to call the service// RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); Intent openAppIntent = new Intent(context.getApplicationContext(), MainActivity.class); openAppIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds); PendingIntent openAppPendingIntent = PendingIntent.getActivity(context, 0, […]