是否可以使用带有 @hide 注释的 Android SDK 方法?
Posted
技术标签:
【中文标题】是否可以使用带有 @hide 注释的 Android SDK 方法?【英文标题】:Is it possible to use Android SDK methods with @hide annotation? 【发布时间】:2011-02-09 22:13:00 【问题描述】:是否可以在不重新编译sdk的情况下使用带有@hide注解的方法?
注意:我知道我不应该使用这种方法等。
【问题讨论】:
【参考方案1】:是的,反射解决了很多问题......很高兴知道你知道你不应该使用它们:)
【讨论】:
您能举例说明如何在运行时使用反射覆盖方法吗? @m0s:您不能在运行时使用反射覆盖方法。而且,为了强调这一点,您不应该使用这些方法,更不用说覆盖它们了。 不要这样做。这不仅仅是“你不应该使用它们”,而是“依赖于此的应用程序会在不同的设备和平台版本上随机中断”,因为无法保证这些私有符号会保留。 明确一点——当我们对新版本的 android 平台进行兼容性测试时,如果我们有一个应用程序出现故障并看到它在任何地方使用私有 API,我们停止 测试它并认为它是一个损坏的应用程序,故事结束。使用私有 API,您很有可能会痛苦地朝自己的脚开枪。 那么这是否意味着不应该存在具有完全工作的 WebView(即支持表单中的文件输入)的应用程序?或者有没有办法在不覆盖 m0s 回答中的隐藏方法的情况下实现这一点?【参考方案2】:是的,可以使用这些方法。在我的情况下,我必须重写一个隐藏的方法,特别是 WebChromeClient 的 openFileBrowser 方法。为此,我只需将方法添加到扩展 WebChromeClient 的类主体中,一切正常。但是,如果我放置了@Override 注释,eclipse 会抱怨并拒绝编译......只需将其删除,一切都会编译并运行良好。吉利德得到了接受的答案,因为他的“是的”确实是正确的,并促使我进行实验。
【讨论】:
但是你不能调用超级方法。以上是关于是否可以使用带有 @hide 注释的 Android SDK 方法?的主要内容,如果未能解决你的问题,请参考以下文章
AndroidStudio 修改注释渲染(documentation显示@hide)
jQuery Show / Hide 在 Android 上不起作用
是否可以在 Amplify 的 schema.graphql 中指定 2 个带有身份验证注释的 Cognito 用户池?