【问题标题】:Cannot resolve android.net.SntpClient class无法解析 android.net.SntpClient 类
【发布时间】:2025-12-18 01:45:01
【问题描述】:

我正在尝试使用应该在 android.net 包中的类 SntpClient,但 Android Studio 告诉我它找不到它。事实上,当我查看源 jar(API 19 和 API 21)时,该类不存在。但是根据 grepcode 应该是这样的。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.4_r1/android/net/SntpClient.java

我做错了什么?

【问题讨论】:

    标签: android ntp grepcode


    【解决方案1】:

    Google 已选择不将所有公共类作为 SDK 的一部分提供。可见性由@hide 注释标签as described here 控制。

    我不确定他们为什么选择特别隐藏 SntpClient,但如果您尊重 Apache 许可条款,您可以将源代码复制到您的应用程序中而无需进行太多修改。

    【讨论】:

    • 通常我会看到带有@hide 标签的类。这个我根本找不到,所以我猜它实际上是 SDK 中缺少的。
    • @Flyview 能否举一个 SDK 中可用的隐藏类的示例?
    • TelephonyManager.isMultiSimEnabled() 就是一个例子。它有@hide 标签,但我仍然可以看到该方法。也许是因为那只是一个隐藏的方法,而 SntpClient 是一个隐藏的整个类?
    • 我在 TelephonyManager 实例上的 Eclipse 智能感知中看不到 isMultiSimEnabled,所以我想知道为什么它对您可见?也许有特定版本的 SDK 意外泄露?我注意到它在 Android 源代码中的花括号中,但没有文档表明这很重要。
    • 如果你点击进入 TelephonyManager(我使用的是 Android Studio,所以 ctrl+click),你可以看到整个类,以及许多带有 @hide 标签的方法。