如何让Android KitKat用户不下载应用程序?

2024-04-05

我在Android 中开发了一个应用程序。它适用于除 KitKat 用户之外的所有用户。当我在 Play 商店上传此应用程序时,我希望 KitKat 用户无法下载此应用程序。即使当我在系统中执行此应用程序时,它也会检测 KitKat 手机。我尝试过使用android:maxSdkVersion="18"在Android清单文件中,但这是不可能的。

有什么办法可以做到吗?


这取决于你到底想要什么。根据文档 http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#max对于已弃用的 maxSdkVersion:

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

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

关于此事关于编译的注意事项 http://developer.android.com/google/play/filters.html#manifest-filters:

...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 http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#max,设置 maxSdkVersion 会在 Google Play 中过滤它,因此高于该级别的设备不会看到它。不过,这是唯一检查它的地方。侧面装载仍然是可能的。

您将遇到的唯一真正问题是人们升级操作系统。如果他们从 Play with 4.3 下载该应用程序,然后升级到 4.2,则该应用程序将无法正常运行。

对于这些用户(和侧面加载程序),您可能需要在启动时进行版本检查。如果他们检查失败,请优雅地通过对话等方式告诉他们发生了什么。这比看不见的“它不再工作了!”要好得多。

但是,如果您可以通过改变完成方式来解决这个问题,那么这是迄今为止最好的解决方案。

Thanks.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让Android KitKat用户不下载应用程序? 的相关文章

  • Android第一次动画不流畅

    我正在尝试一个动画将 imageView 从屏幕底部滑动到屏幕中心 但是当我第一次执行此动画时 它不平滑 但当第二次执行动画时 它是正常且平滑的 我几乎尝试了所有方法 但无法解决我的问题 这是我的动画文件
  • 导航组件重复 NavArgs 的问题

    我有一个片段 class SomeFragment private val args by navArgs
  • Firebase Analytics 禁用受众国家/地区跟踪

    我正在开发一个严格不允许位置跟踪的应用程序 我想使用 Firebase Analytic 的其他功能 例如 PageTransitions 和 Crashalitics 但如果我无法禁用受众位置跟踪 我就无法使用其中任何功能 这是我在 An
  • 在自定义对象中创建时粘性服务不会重新启动

    我有一个具有绑定服务的单例对象 我希望它重新启动 当我从启动器启动应用程序时 单例对象将初始化并绑定到这个现有的服务实例 以下是在单例中创建和绑定服务的代码 public class MyState private static MySta
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 如果我们使用后退按钮退出,为什么 Android 应用程序会重新启动?

    按住主页按钮并返回应用程序时 应用程序不会重新启动 为什么使用后退按钮会重新启动 如果我们使用后退按钮退出 有什么方法可以解决在不重新启动的情况下获取应用程序的问题吗 请帮忙 当您按下Home按钮 应用程序将暂停并保存当前状态 最后应用程序
  • 在 Google Analytics 中跟踪应用程序版本

    我正在使用谷歌分析模块 https marketplace appcelerator com apps 5081 2014113336 https marketplace appcelerator com apps 5081 2014113
  • 在 Android 中使用 DataOutputStream 在 POST 正文中发送特殊字符 (ë ä ï)

    我目前正在开发一个具有大量服务器端通信的 Android 应用程序 昨天 我收到一份错误报告 称用户无法发送 简单 特殊字符 例如 我搜索过但没有找到任何有用的东西 可能重复 没有答案 https stackoverflow com que
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • 带有自定义阵列适配器的微调器不允许选择项目

    我使用自定义阵列适配器作为微调器 但是 当在下拉列表中选择一个项目时 下拉列表保留在那里 并且微调器不会更新 这是错误行为 与使用带有字符串的通用数组适配器相比 这是自定义类 我错过了什么吗 谢谢 public class Calendar
  • Android 启动器快捷方式

    我制作了一个简单的打卡 打卡时钟应用程序 我想向用户添加在主屏幕上创建快捷方式的选项 该快捷方式将切换应用程序的状态 超时 超时 但我根本不希望此快捷方式在屏幕上打开应用程序 这是我的 setupShortcut private void
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • Android构建apk:控制MANIFEST.MF

    Android 构建 APK 假设一个 apk 包含一个库 jar 例如 foo jar 该库具有 META INF MANIFEST MF 这对于它的运行很重要 但在APK中有一个包含签名数据的MANIFEST MF 并且lib jar
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • 在 Android 上按下电源按钮时,如何防止先调用 onDestroy() 再调用 onCreate()

    我正在记录每个 onCreate 和 onDestroy 调用 我发现 一旦我单击 Android 上的电源按钮 以及模拟器上的电源按钮 我的活动中就会拨打电话 gt onDestroy gt onCreate 这会杀死我的游戏 然后立即从
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • 当手机旋转(方向改变)时如何最好地重新创建标记/折线

    背景 开发一个使用 Android Google Map v2 的本机 Android 应用程序 使用android support v4 app FragmentActivity 在 Android v2 2 上运行 客观的 在更改手机方
  • Android中webview的截图方法

    我在 webview 中的 html5 canvas 上画了一些线 并尝试使用下面的代码截取 webview 的屏幕截图 WebView webView WebView findViewById R id webview webView s

随机推荐

  • 无法使用 shell 脚本将文件上传到 aws s3

    我在尝试上传到 s3 时遇到以下错误 下面的脚本似乎是正确的 但我仍然遇到上述错误 请有人帮我解决这个错误 我的密钥和访问 ID 是正确的 因为我能够在 java 和 ruby 中使用这些密钥连接到 AWS
  • 如何在RxSwift中观察对象的属性?

    我有以下内容Forecast class class Forecast let city City var currentTemperature String didSet print cur tepm was set to current
  • python 脚本是否知道其存储的位置路径?

    home bar foo test py 我在尝试test py打印 home bar foo无论我从哪里运行脚本 import os def foo print os getcwd 测试运行 home bar python home ba
  • 从 logcat 中删除 onFlyCompress 消息

    我在用YuvImage来压缩android hardware Camera馈送到 jpeg 从那时起 我不断看到skia onFlyCompresslogcat 中的消息 这完全污染了它 有什么办法可以禁用此消息吗 我知道我可以过滤 log
  • 如何在 Octave 中永久加载包?

    我在 Windows vista 上使用 Octave 我在代码中使用 4 个包 但是每次我重新启动八度音程时 我都必须从命令行手动加载 pkg load 有没有办法永久加载它们 以便每当 Octave 启动时它都会在其路径中找到它们 当
  • 如何在 mongo 中不区分大小写地索引用户名?

    我正在编写一个网络服务 用户可以选择一个不区分大小写的唯一用户名 不过 我想允许他们使用区分大小写的用户名版本 在插入时检查用户名没有不区分大小写的重复项的最佳方法是什么 我目前看到有两种方法可以做到这一点 存储小写版本和用户输入大小写的另
  • 使用 Google Maps API 配置热图叠加层

    我正在尝试使用 Google Maps API 生成位置热图 它可以工作 但结果不是很有用 因为热图渲染的部分很小很难看到 文档中没有任何内容建议扩展热图以呈现更大的斑点的方法 是否有一种未记录的方法可以做到这一点 或者这只是 API 的限
  • 解码 OAEP 填充时出错

    使用解密文本时RSACryptoServiceProvider Decrypt 我收到错误 解码 OAEP 填充时出错 这是我的代码 CspParameters cspParam new CspParameters cspParam new
  • 如何在不按 F5 的情况下使缓存图像过期?

    我正在使用 MVC4 和 C 制作一个 Web 应用程序 我允许用户上传他们的个人资料图片 此时 我需要之前的个人资料图片过期 以便当浏览器重新加载页面时显示新图像 目前 由于两个图像共享相同的名称 因此浏览器使用已缓存的先前图像而不是新图
  • 单击 iframe 中的链接根本没有任何效果

    在 Google Chrome 中 我注意到点击一些链接似乎根本没有效果 a href http google com clicking this link does nothing at all a 这里有一个JSBin http jsb
  • 避免在重建期间删除当前的 Lucene.NET 索引

    我是 Lucene NET 的新手 但我正在使用一个开源工具 http trac sitecore net AdvancedDatabaseCrawler 为Sitecore CMS http www sitecore net它使用 Luc
  • Robot Framework:在实际变量中包含竖线(|)字符而不是作为分隔符的方法?

    我通过文本格式使用 Robot Framework 和 robot 文件设置 我一直在寻找一种包含管道字符的方法 变量中每一侧都有一个空格 以便变量中的内容可读 而不会导致 Robot Framework 将其视为分隔符 问题在于 Robo
  • 如何从另一个 Grails 插件配置 Grails 插件

    我正在尝试编写一个可以在多个 Grails 应用程序中重用的插件 该插件基本上应该是一个包装器弹簧安全核心 http grails org plugin spring security core和 LDAP 插件 这意味着它应该包含 用户
  • 运行时的“v2.0.50727”,如果没有附加配置信息,则无法在 4.0 运行时中加载[重复]

    这个问题在这里已经有答案了 我正在将 vcproj 从 VS2005 转换为 VS2010 但转换后出现以下错误 附加信息 混合模式程序集是针对运行时版本 v2 0 50727 构建的 如果没有附加配置信息 则无法在 4 0 运行时中加载
  • 耳朵图像处理 - 在 MATLAB 中查找直线和曲线的交点

    1 https i stack imgur com j3ZRQ jpg我有一只耳朵的 Canny 边缘输出 我用一条线 绿色 连接了最远的两个边界 现在我想从这条线的中点到外边界 左侧 绘制一条法线 我编写的代码帮助我绘制法线 但我希望红线
  • mysql NOW() 返回错误值,而全局时区设置为 +00:00

    两周以来 我对时区问题感到困惑 在我的本地主机上一切正常 但它在专用服务器上返回错误的值 让我说说到目前为止我做了什么 首先通过以下查询设置全局时区 本地主机和服务器上的超级权限 SET GLOBAL time zone 00 00 现在运
  • 如何访问权限允许管理android studio中的所有文件

    在 Android 10 和 11 SDK 30 中 如何访问Android设备中的所有文件并授予允许管理所有文件的权限 我已经尝试过requestLegacyExternalStorage defaultToDeviceProtected
  • 将 java 对象/类从一个类加载器复制到另一个类加载器

    您好 有没有一种方法可以将一个类加载上下文 属性等 从一个类加载器 例如 制作 类点 复制到另一个类加载器 明确表示 例子 我在 CL 1 上有一个对象点 现在在另一个 CL2 上运行 我想在 CL 3 中创建这个对象 一些对象 class
  • 设置 dplyr 链内列的格式

    我有这个数据集 dat lt structure list date structure c 1L 1L 1L 2L 2L 2L 3L 3L 3L 4L 4L Label c 3 31 2014 4 1 2014 4 2 2014 4 3
  • 如何让Android KitKat用户不下载应用程序?

    我在Android 中开发了一个应用程序 它适用于除 KitKat 用户之外的所有用户 当我在 Play 商店上传此应用程序时 我希望 KitKat 用户无法下载此应用程序 即使当我在系统中执行此应用程序时 它也会检测 KitKat 手机