android - 如何获取与 appwidget ID 关联的 appwidget 布局

标签 android android-appwidget appwidgetprovider

我想要获取与 appwidget id 关联的 appwidget 布局。

在 appwidget 的 Widget 提供程序类中,android 文档提供了一种获取 appwidget id 的简单方法...

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    final int N = appWidgetIds.length;
    // Perform this loop procedure for each App Widget that belongs to this provider
    for (int i=0; i<N; i++) {
        int appWidgetId = appWidgetIds[i];


但它们的 ID 不允许我知道它来自哪个 appwidget 提供程序(多个 widget 提供程序和布局)。

编辑:我正在使用服务类来更新小部件,而不是小部件提供程序类。

在服务类中,我想获取每个 id 的 appwidget 布局,以便我可以使用 Remoteviews 来更新该布局。我尝试了一些不同的建议,但它们都没有给我提供与远程 View 一起使用所需的值(value)。例如“R.id.widget_layout”

如何从应用程序小部件 ID 中以正确的“int”形式获取“R.id.widget_layout”之类的值以与远程 View 一起使用?

最佳答案

您可以通过以下方式获取 AppWidget 布局 ID 和有关每个 AppWidget 提供程序的信息:

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    final int N = appWidgetIds.length;

    for(int i=0; i<N; i++) {

        int appWidgetId = appWidgetIds[i];

        // you can use layoutId variable instead of R.id.widget_layout
        int layoutId = appWidgetManager.getAppWidgetInfo(appWidgetId).initialLayout;
        // String yourProvider will be something like .WidgetProvider2x2
        String yourProvider = appWidgetManager.getAppWidgetInfo(appWidgetId).provider.getShortClassName();

    }

}

关于android - 如何获取与 appwidget ID 关联的 appwidget 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22894590/

相关文章:

android - 支持事务的 Firebase 查询

java - 我可以读取链接 key 表吗?

java - 如何在 Eclipse 中拖动按钮并自动生成 onclick 方法?如何在 Eclipse 中查找变量/方法引用?

java - 如何在保持宽高比的同时填充应用程序小部件中的 ImageView?

android - 从 AppWidgetProvider 或服务类中的应用程序小部件创建新的 Android 通知?

android - 无法解析属性 "src"中的可绘制对象

java - 具有 SharedPreferences 的 AppWidget 必须更新两次

android - 在appwidget中输入

android - 如果我在 Widget Info XML 文件中将 "updatePeriodMillis"字段留空会发生什么?

android - 应用程序小部件安卓