gpt4 book ai didi

android - 为什么在 queryIntentActivities() 方法中指定的标志设置为零?

转载 作者:搜寻专家 更新时间:2023-11-01 09:09:11 26 4
gpt4 key购买 nike

我正在使用 Android 提供的服务开发一个简单的语音识别器并阅读 speech input article在 Android 开发者网站上。本文展示了以下代码:

PackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(
new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);

...

queryIntentActivities 方法的第二个参数是一个 int 标志。如果我理解的话,这个标志用于添加额外的搜索选项:在这种情况下,搜索指定的Intent有哪些选项?

为什么示例中指定的标志设置为零?

最佳答案

这应该作为 SDK 文档问题归档在 Android 问题管理系统中。我有同样的问题。 PackageManager 是一个抽象类,其子类最终调用称为“PackageManagerService”的系统服务,该服务实现了#queryIntentActivities(Intent, int) 的逻辑。

在改进文档之前,答案可以在源代码中找到,例如 1.5r4 源代码位于 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/com/android/server/PackageManagerService.java#PackageManagerService.Settings.isEnabledLP%28android.content.pm.ComponentInfo%2Cint%29 .

Why does the flag specified in the example is set to zero?

“0”标志很可能是某些已被永久复制的示例/引用代码的残余。 PackageManagerService 中的代码不容易理解。看起来 com.android.server.IntentResolver#queryIntent(...) 最终在解析过程中被调用。此方法的调用者只关心 MATCH_DEFAULT_ONLY 标志的位值。请记住,Intent 标志可以进行 OR 运算和 AND 运算。我想说的是,#queryIntent(...) 最终会看到是否设置了 MATCH_DEFAULT_ONLY 的位值。

in this case, what options are available for searching the specified Intent?

在目前的情况下,如果没有大量的实验和代码分析,很难完全自信地说出哪些标志实际起作用以及它们如何起作用。我可以说使用了 PackageManager.COMPONENT_ENABLED_STATE_ENABLED、PackageManager.COMPONENT_ENABLED_STATE_DEFAULT 和 PackageManager.COMPONENT_ENABLED_STATE_DISABLED。

关于android - 为什么在 queryIntentActivities() 方法中指定的标志设置为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9623079/

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