gpt4 book ai didi

java - 没有方法在 RemoteViewsService 中触发 - Android

转载 作者:太空狗 更新时间:2023-10-29 15:42:10 26 4
gpt4 key购买 nike

下面是我的小部件扩展 AppWidgetProvider 的一些代码。将小部件放在主屏幕上时可以正确呈现,但 View 是空的。使用日志记录,我发现我用于扩展 RemoteViewsService (BudgetWidgetService) 的类没有调用任何方法,它返回 RemoteViewsService.RemoteViewsFactory 的实现。

是否有错误导致 BudgetWidgetService 永远无法实例化或使用?

我什至找不到一种方法来检查 BudgetWidgetService 是否绑定(bind)到我创建的 RemoteViews 布局。如果您能想到任何我可以进一步诊断此问题的方法,除了在我的 AppWidgetProvider 中记录方法调用和 RemoteViewsService 的扩展之外,我也将不胜感激,

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Log.i("Budget Widget", "Provider onUpdate called");
// Update each of the widgets with the remote adapter
for (int i = 0; i < appWidgetIds.length; ++i) {
RemoteViews layout = buildLayout(context, appWidgetIds[i]);
appWidgetManager.updateAppWidget(appWidgetIds[i], null);
appWidgetManager.updateAppWidget(appWidgetIds[i], layout);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}

private RemoteViews buildLayout(Context context, int appWidgetId) {
Log.i("Budget Widget", "Provider buildLayout called");
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_budget);

RemoteViews list_item = new RemoteViews(context.getPackageName(), R.layout.widget_budget_item);
list_item.setTextViewText(R.id.widget_budget_item_text, "Test #1");

final Intent intent = new Intent(context, BudgetWidgetService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
rv.setRemoteAdapter(R.id.widget_budget_list, intent);

rv.setEmptyView(R.id.widget_budget_list, R.id.empty_view);

final Intent refreshIntent = new Intent(context, BudgetWidgetProvider.class);
refreshIntent.setAction(BudgetWidgetProvider.REFRESH_ACTION);
final PendingIntent refreshPendingIntent = PendingIntent.getBroadcast(context, 0,
refreshIntent, PendingIntent.FLAG_UPDATE_CURRENT);
rv.setOnClickPendingIntent(R.id.refresh_button, refreshPendingIntent);

return rv;
}

最佳答案

我遇到了同样的问题,发现我忘记在我的 AndroidManifest.xml 中为我的 RemoteViewsService 添加 android.permission.BIND_REMOTEVIEWS 权限:

<service android:name="MyWidgetService"
...
android:permission="android.permission.BIND_REMOTEVIEWS" />

我在 App Widgets guide 上的“带有集合的应用程序小部件的 list ”部分找到了我的答案。 .

关于java - 没有方法在 RemoteViewsService 中触发 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16640856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com