我在 Android 中开发了一个应用程序。它适用于除 KitKat 用户之外的所有用户。当我在 Play 商店上传此应用程序时,我希望 KitKat 用户无法下载此应用程序。即使当我在我的系统中执行这个应用程序时,它也在检测 KitKat 手机。我曾尝试在 Android list 文件中使用 android:maxSdkVersion="18"
,但这是不可能的。
有什么办法吗?
最佳答案
这取决于你到底想要什么。根据documentation对于已弃用的 maxSdkVersion:
Android 的 future 版本(超过 Android 2.0.1)在安装或重新验证期间将不再检查或强制执行 maxSdkVersion 属性。但是,在向用户提供可供下载的应用程序时,Google Play 将继续使用该属性作为过滤器。
因此,用户仍然可以旁加载该应用,但对于该级别以上的用户,它不会出现在 Google Play 中。这听起来像你想要的。没有办法(自 2.0.1 起)完全禁用侧载。
关于这个note about compilation :
...and the SDK will not compile if maxSdkVersion is set in an app's manifest.
我有疑问。在刚刚测试之后,我的 Eclipse/ADT 可以在设置 maxSdkVersion=15 的情况下编译得很好。所以我不会为此担心。
关于 targetSdkVersion 的答案对某些事情来说是好的,但如果你使用的是在较新的 API 中被故意破坏/改变的东西,它们将根本不起作用。例如,再多的兼容模式也不允许 4.2+ 从非 root 应用程序中以编程方式打开/关闭飞行模式。它也不会改变 SecureRandom 的新实现。
如果应用程序真的因为删除了关键功能而对 4.4 完全无用,请尝试使用 maxSdkVersion。使用已弃用的方法总是让我觉得不好,但如果他们不提供任何类型的功能替代,有时它是唯一的选择。
就像 http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#max 中所说的那样,设置 maxSdkVersion 确实会在 Google Play 中对其进行过滤,因此该级别以上的设备不会看到它。不过,这是唯一检查它的地方。侧载仍然是可能的。
您将遇到的唯一真正问题是人们升级他们的操作系统。如果他们从 Play with 4.3 下载它,然后升级到 4.2,该应用将无法正常运行。
对于那些用户(和侧加载器),您可能希望在启动时进行版本检查。如果他们检查失败,优雅地告诉他们在对话中发生了什么,等等。比无形的“它不再起作用了!”要好得多。
但是,如果您可以通过改变完成方式来解决这个问题,那将是迄今为止最好的解决方案。
谢谢。
关于android - 如何让一个应用程序不被 Android KitKat 用户下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25278293/