能不能把隐藏的方法显示出来?

移动开发 2026-07-09

我正在开发一个用于录制和播放音频的Android应用。为了生成更友好的日志信息,我想使用来自类 android.media.AudioFormat 的这个方法:

/** @hide */
public static String toLogFriendlyEncoding(int enc) {...}

它返回正在使用的编码常量的“人类可读”描述。然而,由于该方法被注解为 @hide,Android Studio在编译我的代码时会抛出错误:

Log.d(TAG, "encoding: " + AudioFormat.toLogFriendlyEncoding(AUDIO_ENCODING));

是否可以以某种方式推翻这个 @hide 注解?我真的看不出将这个方法复制粘贴并在本地重新实现有什么意义。它也不会带来安全或其他风险,创建一个本地副本可能会导致随时间与实际实现不同步的代码……

解决方案

Can one overrule this @hide-annotation somehow?

你也许可以通过反射来绕过它。这取决于它是否在受限名单中。

creating a local copy might create code that gets out-of-sync with the actual implementation over time

在时间的推移中,创建本地副本可能会导致代码与实际实现不同步

另一方面,你假设这个未公开且不可用的方法在所有设备上都存在,但情况未必如此。设备制造商经常修改Android的非公开API。到底有多少设备对这个特定方法进行了改动,谁也说不准。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章