【问题标题】:Finding Android Version Specifically - Whats Wrong? [closed]专门查找 Android 版本 - 怎么了? [关闭]
【发布时间】:2012-10-11 18:02:00
【问题描述】:

好的,所以当我打开我的应用程序时,它应该检查手机的特定版本以使其正常运行。我不想要单独的应用程序,因为这会惹恼用户。我试过这个:

if(Build.VERSION.SDK_INT >= 2.2.3 && Build.VERSION.SDK_INT >= 2.1){
        //Stuff goes here
        }

现在,这是 Eclipse 中的一个基本错误。现在,我可以试试这个:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) {
 //Stuff goes here
 }

但是,如果用户拥有带有自定义 ROM 的 root 手机,它可能会显示不同,因此可能会显示不同,另一件事是这只会给出手机操作系统的名称,而不是特定版本。我试着在 Eclipse 中写这个:

if(Build.VERSION.RELEASE >= 2.2.3 && Build.VERSION.RELEASE >= 2.1){
        //Stuff goes here
    }

它在 Eclipse 中返回一个错误。还有什么好的方法吗?

【问题讨论】:

    标签: android android-emulator version


    【解决方案1】:

    现在,这是 Eclipse 中的一个基本错误

    这是因为SDK_INTint,而不是float。您可以通过阅读the documentation 来了解这一点。

    另外,2.2.3 在任何编程语言中都不是有效数字,AFAIK。

    但是,如果用户拥有带有自定义 ROM 的 root 手机,它可能会显示不同,因此可能会显示不同,另一件事是这只会给出手机操作系统的名称,而不是特定版本。

    不,Build.VERSION_CODES.GINGERBREADint。您可以通过阅读the documentation 来了解这一点。

    它在 Eclipse 中返回一个错误

    这是因为RELEASE 是一个字符串,而不是float。您可以通过阅读the documentation 来了解这一点。

    还有什么好的方法吗?

    您的第二种方法是正确的。

    【讨论】:

    • 查看 Wikipedia 上的“Android 版本历史记录”,Android Froyo 版本有 2.2、2.2.1、2.2.2 和 2.2.3 等类型。我如何检测彼此之间的关系?
    • @MoyleJack:一般来说,你不需要。在这些维护版本中,Android SDK 没有任何变化。
    • 我正在做一个测试手机安全性的应用程序。它将查找手机版本,然后尝试对其进行公开利用。如果其中一个获得 root 访问权限,则会弹出一条消息。一般来说,我问是因为我知道有一种方法可以得到一个准确的 android 版本,但我在 2 年前停止了 android 编码,所以我忘记了大部分。
    • @MoyleJack:嗯,RELEASE 与您将获得的一样接近,但您必须注意您的数据类型。 RELEASE 是一个字符串,因此无法与 float 值进行数值比较。此外,浮点数只有一位小数,所以2.2.1 也不是float。并且无法保证自定义 ROM 将在那里使用可识别的值,因为 RELEASE 仅用于显示目的,而不是供开发人员用于像您一样进行比较。
    • 如果您使用的是自定义 ROM,我很确定您已扎根。如果用户使用自定义 ROM,我不希望我的应用程序出错,但是就像我说的那样,如果您使用自定义 ROM,您的根...另外,如果您说 RELEASE 仅用于显示目的,怎么能我将它用于其他用途,例如我正在使用吗?
    猜你喜欢
    • 2015-01-08
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多