【问题标题】:What is the purpose of android:priority tag?android:priority 标签的目的是什么?
【发布时间】:2022-01-19 13:48:23
【问题描述】:

<intent-filter> 中的android:priority 的用途是什么?因为我注意到当存在可以由(至少)两个应用程序处理的隐式意图时,会出现一个选择器(也称为disambiguation dialog),可以选择两个应用程序之一。但我认为当 app_1 具有比 app_2 更高的优先级(例如 999)(例如 0 或 10)时,Android 总是会选择 app_1 而没有一个选择器。

【问题讨论】:

标签: android android-intent intentfilter


【解决方案1】:

在处理过滤器描述的类型的意图方面,应给予父组件的优先级。该属性对活动和广播接收器都有意义: 它提供了有关活动如何能够响应与过滤器匹配的意图的信息,相对于也可以响应该意图的其他活动。当一个意图可以由具有不同优先级的多个活动处理时,Android 将只考虑那些具有较高优先级值的活动作为该意图的潜在目标。 它控制执行广播接收器以接收广播消息的顺序。具有较高优先级值的那些在具有较低值的那些之前被调用。 (该顺序仅适用于同步消息;对于异步消息将被忽略。)

仅当您确实需要强制规定接收广播的特定顺序,或者想要强制 Android 优先选择一个活动而不是其他活动时,才使用此属性。

该值必须是整数,例如“100”。数字越大优先级越高。默认值为 0。

在某些情况下,请求的优先级会被忽略,并且值上限为 0。这发生在以下情况:

非特权应用程序请求任何优先级 >0 特权应用程序请求 ACTION_VIEW、ACTION_SEND、ACTION_SENDTO 或 ACTION_SEND_MULTIPLE 的优先级 >0

【讨论】:

  • 好的,但我也不明白。我的意思是:1)非特权应用程序的定义是什么?是非系统的吗? 2)我还使用了与我描述的相同场景的自定义操作(例如 com.example.test)(两个可以处理意图的应用程序,但具有不同的优先级),但“选择器”也出现了
  • 1) 正确。 source.android.com/devices/tech/config/perms-allowlist 2) android 显示活动选择器,不会考虑优先级较低的活动。
  • 感谢您的解释。现在很清楚了!
猜你喜欢
  • 2022-01-14
  • 1970-01-01
  • 2023-03-14
  • 2010-10-16
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多