gpt4 book ai didi

java - Android widget 的固定更新频率

转载 作者:行者123 更新时间:2023-11-30 03:30:56 27 4
gpt4 key购买 nike

为了拥有Widget ,我们需要维护一个 XML 文件 (AppWidgetProviderInfo),它描述了小部件的属性,例如像这样的大小或固定更新频率:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="160dp"
android:minHeight="72dp"
android:initialLayout="@layout/widget_layout"
android:updatePeriodMillis="1800000"
android:configure="android.project.WidgetConfigure" >

</appwidget-provider>

并维护 AndroidManifest.xml 中的 App Widget 配置。

<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>

我知道我们无法编辑 updatePeriodMillis。以编程方式,我们需要使用 AlarmManager。 ( Android Widget set android:updatePeriodMillis programmatically )

但是我如何以编程方式从 xml 文件中读取该值。有什么办法吗?

附录:

try {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext());
AppWidgetProviderInfo info = appWidgetManager.getAppWidgetInfo(R.xml.widget_info);
System.out.println("Time: " + info.updatePeriodMillis);
} catch(Exception err) {
err.printStackTrace();
}

如果我在 Activity 中使用此代码,它会在 catch 中返回 NullPointerException。

最佳答案

updatePeriodMillis 是系统使用的一个值,以便在该时间段到来时向您发送适当的广播。为什么要在读取它的同时触发 AlarmManager intent?

编辑后:你传递了错误的“id”;您应该传递实际的小部件 ID,而不是它的 XML 元数据 ID。正如我在上一条评论中所写,试试这个:AppWidgetManager.getInstance(),然后使用 AppWidgetManager.getAppWidgetIds() 检索您的 widget(s) id,然后继续讨论 (AppWidgetManager.getAppWidgetInfo() ...)

关于java - Android widget 的固定更新频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17488931/

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