我的应用程序设置为在 minSdk = 5 上运行,但绝大多数用户使用 SDK 8 (FroYo) 及更高版本。我希望能够将 android:configChanges="uiMode"用于我的主要 Activity ,但我无法做到这一点,因为直到 SDK 级别 8 才引入该模式。所以,我希望我可以在运行时 - 检查设备上运行的 SDK 级别,然后使用反射添加该参数。
这可能吗?
编辑: 问题是,每当用户的手机连接到扩展坞时,我的应用程序就会被终止,然后重新创建。我试图通过包含 android:configChanges="uiMode"来避免这种情况。
最佳答案
经过深入研究Android Reference ,在运行时您可以对 list 进行的更改很少。这是出于安全考虑,因为通过 PackageManager
,人们可以获得有关设备上任何应用程序的非常具体的信息。虽然启用/禁用给定组件很容易,但在大多数其他情况下,您只能读取 list 信息...而不能写入它。
替代方案
您可以制作一个支持 API 级别 8 的单独 APK。
您可以手动检查配置状态并在配置状态更改时运行代码。配置的对象引用是 here .
编辑:(新信息)
虽然你无法更改 configChanges,但我发现 this question与你的密切相关。事实证明您可能不必这样做。这意味着您在支持新的 configChanges
时可以使用 Android 的向后兼容模式。如果上面的链接已损坏,请参阅以下 URL:https://stackoverflow.com/a/7893148/501932
为了让您使用它,建议在保留原始 minimumSdk
的同时设置一个新的 targetSdk
。它还要求您拥有更新的 SDK 本身。显然,这对于使用 AdMob API 的用户来说意义重大。
关于android - 在Android中,有没有办法在运行时而不是在 list 中为 Activity 设置 "android:configChanges"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10975056/