在清单文件中指定意图操作的正确方法是啥?

Posted

技术标签:

【中文标题】在清单文件中指定意图操作的正确方法是啥?【英文标题】:What's the correct way to specify an intent action in Manifest File?在清单文件中指定意图操作的正确方法是什么? 【发布时间】:2012-01-22 12:13:21 【问题描述】:

本教程说要在 XML intent-filter 内的操作元素中使用 android.appwidget.action.APPWIDGET_UPDATE

然而,

这是字符串常量 ACTION_APPWIDGET_UPDATE 的值 android.appwidget.AppWidgetManager

-- 我是 Android 新手,但在一般编程中,鼓励使用符号常量而不是文字值。

我可以在我的 xml 文件中使用 android.appwidget.AppWidgetManager.ACTION_APPWIDGET_UPDATE 而不是“android.appwidget.action.APPWIDGET_UPDATE”吗?

这是一个很好的实践问题,而不是一个让我不解的问题。

【问题讨论】:

我认为如果您将 android.appwidget.AppWidgetManager.ACTION_APPWIDGET_UPDATE 放入您的 xml 文件中,您的 appwidget 将不会收到通知。 intent-filter 需要一个字符串来执行操作,您不能引用代码中定义的常量。 是的,我认为答案是Android开发中使用的XML文件不支持不直接使用字符串文字的“最佳实践”。直接使用字符串文字,这并不理想,并且会受到关于在任何程序中直接使用字符串文字的常见批评。 也许这是最佳实践。正如我在 Android 意图的源代码中发现的那样,动作被定义为静态最终字符串。它们未在配置和 xml 文件中定义。也许这是因为每次从文件中读取信息是一个很大的惩罚。但是,在您的项目中,您可以在 XML 文件中定义它们。但在我看来,最好将它们定义为代码中的最终静态字符串。 【参考方案1】:

请在 res/value/String.xml 文件中使用您的自定义意图过滤器操作值,并在所有需要的地方使用它,即 manifest.xml 以及其他 java 文件。

我认为这是我找到的最好方法。因为您只能在一个地方使用更改,并且它会反映在每个引用的地方。

谢谢,

【讨论】:

【参考方案2】:

答案是否定的,Android 不允许这样做,我想不出一个令人信服的理由。该问题专门询问标准的 Android 字符串文字,而不是自定义字符串文字,因此我不接受其他答案(这仍然是一个很好的答案,因此值得赞成)。

【讨论】:

以上是关于在清单文件中指定意图操作的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 HTML5 缓存清单中指定通配符以加载目录中的所有图像?

管理 Kubernetes 清单更改的正确方法是啥?

无法在 Intellij 中指定主要清单属性

未找到应用程序依赖项清单 (...) 中指定的程序集

在 prometheus 的 alert_rules.yml 文件中指定的正确规则应该是啥

从 Java 代码中指定 DIP 尺寸的正确方法是啥?