调用需要 API 级别 26(当前最小值为 23):即时

我正在实现谷歌的方向API。我的应用支持,但此处不受支持。minSdkVersion 23java.time.Instant

是否有解决方案,或者我应该只检查用户的版本并允许此功能(如果支持其版本)?

    DirectionsResult directionsResult = DirectionsApi.newRequest(geoApiContext)
            .mode(TravelMode.DRIVING)
            .origin(new com.google.maps.model.LatLng(mapFragment.getUserCoords().latitude, mapFragment.getUserCoords().longitude))
            .destination(tabHandlerCommunication.destinationBarCoords)
            .departureTime(Instant.now()) // <-- error here
            .await();

错误:

调用需要 API 级别 26(当前最小值为 23):java.时间。即时#现在更少...(按右键 +F1)检查信息:此检查会扫描应用程序中的所有 Android API 调用,并警告在此应用程序所针对的所有版本上不可用的任何调用(根据清单中其最小 SDK 属性)。如果您真的想使用此API并且不需要支持较旧的设备,只需在build.gradle或安卓智能体中设置minSdkVersion.xml文件即可。如果您的代码故意访问较新的 API,并且您已确保(例如,使用条件执行)此代码只会在受支持的平台上调用,那么您可以使用@TargetApi注释来注释您的类或方法,该注释指定要应用的本地最小 SDK,例如 @TargetApi(11),以便此检查将 11 而不是清单文件的最低 SDK 视为必需的 API 级别。如果您有意在样式定义中设置android:属性,请确保将其放在value-vNN文件夹中,以避免在某些设备上遇到运行时冲突,其中制造商添加了自定义属性,其ID与更高平台上的新属性冲突。同样,您可以在 XML 文件中使用工具:targetApi=“11”来指示元素只会在适当的上下文中膨胀。问题 ID: 新锐


蓝山帝景
浏览 544回答 4
4回答

catspeake

如果您使用的是 Gradle 插件 4.0 或更高版本(适用于 Android Studio 4.0 或更高版本),则可以利用 D8 核心库解压功能。这包括 中找到的功能子集,并允许您在项目中使用;即使您需要支持早于 API 26 的版本。java.timejava.time.Instant在模块的文件中:build.gradleandroid {&nbsp; &nbsp; compileOptions {&nbsp; &nbsp; &nbsp; &nbsp; sourceCompatibility JavaVersion.VERSION_1_8&nbsp; &nbsp; &nbsp; &nbsp; targetCompatibility JavaVersion.VERSION_1_8&nbsp; &nbsp; &nbsp; &nbsp; coreLibraryDesugaringEnabled true&nbsp; &nbsp; }&nbsp; &nbsp; // If using Kotlin&nbsp; &nbsp; kotlinOptions {&nbsp; &nbsp; &nbsp; &nbsp; jvmTarget = JavaVersion.VERSION_1_8&nbsp; &nbsp; }}dependencies {&nbsp; &nbsp; …&nbsp; &nbsp; coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.5'}您现在应该能够无差错地使用此类。

HUH函数

在查看开发人员指南后,事实证明,Stringnow以及常见的 UNIX 纪元时间戳,都是可接受的值:intdeparture_time— 指定所需的出发时间。您可以将时间指定为自 1970 年 1 月 1 日午夜 UTC 以来的整数(以秒为单位)。或者,您可以指定值 ,该值将出发时间设置为当前时间(更正为最接近的秒)。now在检查客户端的源代码时,有一种方便的方法:Javapublic&nbsp;DirectionsApiRequest&nbsp;departureTimeNow()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;param("departure_time",&nbsp;"now"); }因此可以规避,以便向后兼容。java.time.Instant我已提交问题 #559...分叉库似乎是设置其他时间戳的唯一方法。

眼眸繁星

您可以在安卓 API 级别 23 上使用即时类和 Java.time 中的其他类java.time在较旧的和较新的安卓设备上都运行良好。它只需要至少&nbsp;Java 6。在 Java 8 及更高版本以及较新的 Android 设备(从 API 级别 26 开始)上,内置了现代 API。在非Android Java 6和7中获取三十个反向移植,即现代类的向后移植(三十个用于JSR 310,请参阅底部的链接)。在(较旧的)安卓版上使用安卓版的三十号向后移植。它被称为三十二。并确保从子包中导入日期和时间类。org.threeten.bp链接甲骨文教程:日期时间,说明如何使用 java.Java 规范请求 (JSR) 310,其中首次进行了描述。java.time三十个向后移植项目,Java 6 和 7 的向后移植(JSR-310 的三十个)。java.time三天ABP,安卓版三十号回港问:如何在安卓项目中使用三张ABP,并给出一个非常透彻的解释。

慕无忌1623718

我在这里写了关于解决此问题的推荐方法:https://dev.to/cicerohellmann/what-is-desugaring-and-why-would-i-need-it-2bo0但简而言之,你应该使用去苏加,它允许你在较低级别使用一些高级API。值得一试。我还添加了所有链接,以找到如何实现它以及一些商品和坏处。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java