【问题标题】:How to get the Android API version at runtime from Delphi Rio?如何在运行时从 Delphi Rio 获取 Android API 版本?
【发布时间】:2021-10-11 04:08:39
【问题描述】:

在我的 Java 代码中,我可以在运行时轻松地测试当前的 API 级别,例如:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
   doSomething();
}

如何在 Delphi Rio 中找到 Build.VERSION.SDK_INT 的等价物?

我试图寻找 int android_get_application_target_sdk_version(),但我找不到包含它的 Delphi 单元。

另一方面,我在 Androidapi.Configuration 单元中找到了一个function AConfiguration_getSdkVersion(Config: PAConfiguration),但它需要一个PAConfiguration 作为参数,我不知道如何获取。

【问题讨论】:

    标签: android delphi delphi-10.3-rio


    【解决方案1】:

    可以这样做:

    uses
      Androidapi.JNI.Os;
    
    ...
    
      if TJBuild_VERSION.JavaClass.SDK_INT > SomeValue then
    

    SomeValue 的值是您要检查的 API 级别。

    【讨论】:

    • 谢谢。我试过如果 TJBuild_VERSION.JavaClass.SDK_INT >= TJBuild_VERSION_CODES.JavaClass.O 然后 doSomething;但我不得不用硬编码整数替换 TJBuild_VERSION_CODES.JavaClass.O 以避免异常。你能用 TJBuild_VERSION_CODES.JavaClass.xxx 完成你的答案吗?
    • 为什么我要添加一些可能导致异常的东西?正如您所发现的,最好使用硬编码整数。
    • 我理解你的观点。你说得对。我只是不喜欢“幻数”。常量更好。
    • 问题在于,正如您所发现的,TJBuild_VERSION_CODES.JavaClass.O 没有在早期的 SDK 中定义,这有点类似于 catch-22。
    猜你喜欢
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多