【发布时间】:2019-08-28 06:36:21
【问题描述】:
我正在实施Google's Directions API。我的应用支持minSdkVersion 23,这里不支持java.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.time.Instant#now 少... (Ctrl+F1) 检查信息:此检查扫描所有 应用程序中的 Android API 调用并警告任何调用 不适用于此应用程序所针对的所有版本 (根据清单中的最小 SDK 属性)。如果你 真的很想使用这个 API 并且不需要支持旧设备 只需在 build.gradle 或 AndroidManifest.xml 中设置 minSdkVersion 文件。如果您的代码故意访问较新的 API,并且您 已确保(例如通过条件执行)此代码将 只能在受支持的平台上调用,然后您可以注释 带有 @TargetApi 注释的类或方法指定 要应用的本地最小 SDK,例如 @TargetApi(11),这样 check 将 11 而不是清单文件的最小 SDK 视为 所需的 API 级别。如果你故意设置android: 样式定义中的属性,请确保将其放在 values-vNN 文件夹,以避免遇到运行时冲突 制造商添加了自定义属性的某些设备 id 与后来平台上的新 id 冲突。同样,您可以 在 XML 文件中使用 tools:targetApi="11" 来指示元素 只有在适当的情况下才会膨胀。问题 ID:NewApi
【问题讨论】:
-
Is there a solution for this是的。更新minSdk或使用java.time.Instant以外的其他东西 -
@MarcinOrlowski 更好的解决方案是将 ThreeTenABP 库添加到您的 Android 项目中,以获取大部分 java.time 的后向端口功能。请参阅Answer by Ole V.V.。
标签: java android google-directions-api