【问题标题】:Is disabling an application for the new Android versions possible?是否可以为新的 Android 版本禁用应用程序?
【发布时间】:2013-08-30 02:06:22
【问题描述】:

是否可以为较新的 Android 版本(例如 4.2 及更高版本)禁用应用程序?

我有一个应用程序,从 4.2 开始,Google 已使其无用;我不希望用户在使用 Android 4.2 或更高版本时使用/安装它。

【问题讨论】:

标签: android google-play


【解决方案1】:

这取决于你到底想要什么。根据documentation 为已弃用的maxSdkVersion

Android 的未来版本(Android 2.0.1 之后)将不再在安装或重新验证期间检查或强制执行 maxSdkVersion 属性。 Google Play 将继续使用该属性作为过滤器,但是,在向用户展示可供下载的应用程序时。

因此,用户仍然可以旁加载该应用,但对于高于该级别的用户,它不会出现在 Google Play 中。这听起来像你想要的。没有办法(自 2.0.1 起)完全禁用侧载。


关于这个note about compilation

...如果在应用的清单中设置了 maxSdkVersion,SDK 将不会编译。

我有我的怀疑。经过刚才的测试,我的 Eclipse/ADT 编译得很好,设置了maxSdkVersion=15。所以我不会担心这个。


关于targetSdkVersion 的答案对于某些事情来说很好,但如果您在较新的 API 中使用故意破坏/更改的东西,它们将根本不起作用。例如,任何兼容模式都不允许 4.2+ 在非 root 应用程序中以编程方式打开/关闭飞行模式。它也不会改变 SecureRandom 的新实现。

如果由于删除了一项关键功能,该应用程序对于 4.2 真的完全没用,请尝试使用 maxSdkVersion。使用不推荐使用的方法总是让我觉得不好,但如果他们不提供任何功能替代品,有时它是唯一的选择。

但是,如果您可以通过更改完成<whatever> 的方式来解决它,那么这是迄今为止最好的解决方案。

【讨论】:

  • 另外,请参阅我之前对骗子的回答:stackoverflow.com/a/15080707/752320
  • maxSdkVersion 被新版本忽略了,所以这对我来说不是一个真正的选择。 Google 用 4.2(自动禁用/启用飞行模式)为我打破了一些东西,这意味着我的应用在 4.2 之前可以完美运行,但不能在 4.2 之后运行。
  • 对,设备忽略它。 Google Play 仍然使用它来过滤。您无法采取任何措施来防止有人侧载它。在这种情况下,您所能做的就是在启动时检查版本并显示一个解释它的对话框(或其他)。如果您想从 Google Play 用户中过滤它,这起作用。
  • 是的,我认为对话可能是唯一的方法。
【解决方案2】:

以前您可以将android:maxSdkVersion="integer" 设置为17,但在2.1 之后它已被弃用。

您可以将android:targetSdkVersion="Max_api_version_which_supported_by_your_app" 指定为 API Level: 16(4.1) 低于 4.2

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多