1

该应用程序有一些活动,一些仅在更高版本上运行。但是由于活动支持mimeTypeintent-filter所以我无法控制它的启动。

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />

            <data android:mimeType="image/*" />
        </intent-filter>

像这样的活动intent-filter可以通过低于它的版本启动。例如:活动必须在 11 及更高版本中运行,但 android 仍会在较低版本的图像选择器对话框中显示它。有没有办法避免这种情况?

4

2 回答 2

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

正如您从参考资料中看到的,您应该阅读培训文档

于 2013-07-28T10:52:42.437 回答
2

如果您只寻找 XML 配置,我可以向您推荐方法,它是如何在 Android API Demos 中完成的。

他们Activity在 AndroidManifest 中声明为禁用或启用,具体取决于 API 版本android:enabled="@bool/atLeastHoneycomb",其中@bool/atLeastHoneycomb只是values-v11在默认values文件夹中设置为 true 和 false 的标志(您可以查看 Android API Demos,如我之前所说,了解更多详细信息)。

于 2013-07-28T11:02:28.440 回答