Activity / 特定 API 级别的意图过滤器
Activity / intent filter for a specific API level
我有一个应用程序包含一个由意图过滤器生成的 activity(在本例中为 android.hardware.usb.action.USB_DEVICE_ATTACHED),它应该做什么(并且确实)如下:当有问题的应用程序不是 运行ning 并且用户连接了一个与应用程序过滤器匹配的 USB 设备(例如,连接的设备与应用程序支持的类型匹配)时,将出现一个弹出窗口请求我的应用程序(或其他具有类似过滤器的应用程序)将被打开。
但是:我只希望 appear/behaviour 的弹出窗口出现在具有特定版本的 Android 设备上(例如:仅 运行 此 activity Android M 及以上,不适用于 Android API 5 级或以下)。
这样的事情可能吗?
要让 activity 本身仅在某些 API 级别可用,请创建一个 boolean
资源,将不同的值绑定到不同的 API 级别。例如,您可以创建一个 res/values/bools.xml
文件,定义一个 boolean
资源,名称为 is_honeycomb
,值为 false
。然后您可以创建一个 res/values-v11/bools.xml
文件,定义另一个具有相同名称 (is_honeycomb
) 和值 true
的 boolean
资源。您的场景越复杂(例如,"I only want API levels that are prime numbers"),您可能需要定义的资源版本越多。
然后,在 <activity>
元素上有 android:enabled="@bool/is_honeycomb"
(替换为您选择的资源名称),它只会在资源为 API 的级别上启用 true
.
唉,<intent-filter>
没有android:enabled
。您可以通过使用 <activity-alias>
作为您有时可用的 <intent-filter>
,然后使用 enable/disable 那个别名来解决这个问题,尽管我认为我没有尝试过这个。
我有一个应用程序包含一个由意图过滤器生成的 activity(在本例中为 android.hardware.usb.action.USB_DEVICE_ATTACHED),它应该做什么(并且确实)如下:当有问题的应用程序不是 运行ning 并且用户连接了一个与应用程序过滤器匹配的 USB 设备(例如,连接的设备与应用程序支持的类型匹配)时,将出现一个弹出窗口请求我的应用程序(或其他具有类似过滤器的应用程序)将被打开。
但是:我只希望 appear/behaviour 的弹出窗口出现在具有特定版本的 Android 设备上(例如:仅 运行 此 activity Android M 及以上,不适用于 Android API 5 级或以下)。
这样的事情可能吗?
要让 activity 本身仅在某些 API 级别可用,请创建一个 boolean
资源,将不同的值绑定到不同的 API 级别。例如,您可以创建一个 res/values/bools.xml
文件,定义一个 boolean
资源,名称为 is_honeycomb
,值为 false
。然后您可以创建一个 res/values-v11/bools.xml
文件,定义另一个具有相同名称 (is_honeycomb
) 和值 true
的 boolean
资源。您的场景越复杂(例如,"I only want API levels that are prime numbers"),您可能需要定义的资源版本越多。
然后,在 <activity>
元素上有 android:enabled="@bool/is_honeycomb"
(替换为您选择的资源名称),它只会在资源为 API 的级别上启用 true
.
唉,<intent-filter>
没有android:enabled
。您可以通过使用 <activity-alias>
作为您有时可用的 <intent-filter>
,然后使用 enable/disable 那个别名来解决这个问题,尽管我认为我没有尝试过这个。