我有一个应用程序,其中包含一个由意图过滤器(在本例中为 android.hardware.usb.action.USB_DEVICE_ATTACHED )生成的活动,它应该做什么(和做什么)是以下:当有问题的应用程序未运行且用户连接与应用程序过滤器匹配的USB设备时(例如,附加的设备与应用程序支持的类型匹配),将出现一个弹出窗口,要求我的应用程序(或其他类似的应用程序)过滤器)要打开。
但是:我只希望此弹出窗口在具有特定构建版本的Android设备上出现/行为(例如:仅在Android M及更高版本上运行此活动,而不是针对Android API级别5或更低版本运行此活动)。
这样的事情可能吗?
答案 0 :(得分:3)
要让活动本身仅在某些API级别上可用,请创建一个boolean
资源,其中不同的值与不同的API级别相关联。例如,您可以创建res/values/bools.xml
文件,定义boolean
资源,名称为is_honeycomb
,值为false
。然后,您可以创建res/values-v11/bools.xml
文件,定义另一个boolean
资源,其名称相同(is_honeycomb
),值true
。您的方案越复杂(例如,"我只希望API级别是素数"),您可能需要定义的资源版本就越多。
然后,在<activity>
元素上有android:enabled="@bool/is_honeycomb"
(替换为您选择的资源名称),并且只会在资源为true
的API级别上启用。< / p>
唉,<intent-filter>
没有android:enabled
。您可以使用<activity-alias>
为有时可用的<intent-filter>
解决这个问题,然后启用/禁用该别名,但我不认为我已经尝试过这个。