应用程序有一些活动,有些只在更高版本上运行。但由于活动支持mimeType
的{{1}},因此我无法控制其发布。
intent-filter
类似于具有此 <intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
的活动可以通过降低版本启动而不是必须启动。例如:活动必须在版本11及更高版本中运行,但android仍然会在较低版本的图像选择器对话框中显示它。有没有办法避免这种情况?
答案 0 :(得分:2)
您必须使用intent-filter
进行“控制器”活动。
当此活动开始时,它将检查当前的SDK级别,然后将Intent转发到较低或较高的SDK活动,然后转发finish()
本身。
在您的情况下,这可以为您提供更大的灵活性,比如说您希望将平板电脑定位到第三项活动。
另一个论点可能是你的Activity应该测试SDK级别,然后根据这个来交换Fragments
。即你的Activity与SDK无关,但它是一个控制器,用于显示正确的片段。
参考文献:
http://developer.android.com/training/basics/supporting-devices/platforms.html http://developer.android.com/training/basics/supporting-devices/platforms.html#version-codes
http://developer.android.com/training/backward-compatible-ui/abstracting.html
http://developer.android.com/training/backward-compatible-ui/using-component.html
正如您从参考文献中看到的那样,您应该阅读培训文档
答案 1 :(得分:2)
如果你只是在寻找XML配置,我可以建议你如何在Android API演示中完成它。
他们将AndroidManifest中的Activity
声明为已禁用或启用,具体取决于此android:enabled="@bool/atLeastHoneycomb"
之类的API版本,其中@bool/atLeastHoneycomb
只是values-v11
中设置为true的标志在默认的values
文件夹中为false(如前所述,您可以查看Android API演示,了解更多详情)。