是否有可能通过Android Manifest文件将基于底层android平台调用不同活动作为应用程序主要活动的某种条件?
在我的情况下,我想要API-8到11的不同主要活动,从11开始我想要一个不同的活动作为主要活动。
所以我现在在android清单文件中使用以下代码
<activity
android:name="myapp.org.MainActivity"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
请注意,我有一个应用程序,其5-10%的用户仍在2.2和2.3平台上,继续支持旧平台太痛苦了。
请指教,
感谢, 艾哈迈德
解释我为什么要这样做:
应用程序脚印仅小0.6 MB,我的计划是复制整个代码并为新版本增强它,这可能会使脚印增加一倍。然后基于平台启动适当的主动性,如果平台是更新的主要活动来自更新的代码部分将执行,遗留代码永远不会有机会执行(我相信),反之亦然,
我能想到的唯一缺陷是,如果android系统以某种方式直接实例化类,这可能只会在清单中声明一个广播接收器时发生,我不会这样做...所以我希望它是安全的向所有用户发布单个二进制文件,并在运行时执行适当的代码。随着用户数量的进一步下降,遗留代码将从主二进制文件中丢弃。
所有代码都在项目中,这是一个android库,主应用程序是一个使用该库的存根,如果我意识到我上面描绘的场景,我将有两个安卓库,一个旧的库和新的。
答案 0 :(得分:2)
也许您可以添加新的LauncherActivit来判断API级别,然后导航到API级别的不同MainAcivity基础。
答案 1 :(得分:0)
有一个更好的主意,在主要活动中在onCreate中添加获取API版本的条件,如果它是froyo,例如完成此活动并启动另一个,则继续使用此活动。 在这里,您是一个显示如何获取API的链接: Retrieving Android API version programmatically
答案 2 :(得分:0)
如果仅用于主要活动,此解决方案可能有点过多,您应该使用其他解决方案之一,但如果您想将整个应用程序按API级别分开,我建议使用{{3 Android版。
答案 3 :(得分:0)
如果您正在开发Android Studio,请查看gradle flavor,它们允许您为每个平台编译不同的主要活动,拥有不同的资源,图标,字符串等。