关闭

我的Android进阶之旅------>对Java中注释/**@hide*/的初步认识

标签: 我的Android进阶之旅java hide
11399人阅读 评论(1) 收藏 举报
分类:

    

   今天写一个调节系统背光亮度的时候,参考了Android中的Setting源码,在源码中有这么一段代码:

 private static final int MAXIMUM_BACKLIGHT = android.os.PowerManager.BRIGHTNESS_ON;

        然后我模仿它的代码,来进行编写我的应用,但是当我copy这段代码后报错

     报错内容如下:

BRIGHTNESS_ON cannot be resolved or is not a field

 然后我去察看源代码,发现定义如下:

    /**
     * Brightness value for fully on.
     * @hide
     */
    public static final int BRIGHTNESS_ON = 255;

      明显声明为public,怎么可能会访问不到呢?再细看注释,发现里面有“@hide”这个标志。后来百度一下才认识到,类或API是否开放,是通过doc的注释{@hide}来控制的。这表示不对外公开api,但是系统内部是可以使用该注释标记的接口的。

       google 给了两个选择:1. 在你添加的API或者变量前面,增加javadoc 注释@hide。但是要注意的是,并不是简单写个@hide 或者 /*@hide*/ 就可以了,这些都是错误的javadoc注释格式,标准的javadoc都是这样的 /** */ 而且对于 format 变量 应该加上 { }。所以我们应该这样写 /** {@hide} */ 2. 你就是想要生成的javadoc里面出现这个方法或者变量,你必须输入:make update-api 但是如果修改的是google没有开放出来的类,比如RIL,PhoneFactory,就不会出现这个问题。

       如何解决这个报错的问题呢,问了一下公司的前辈,前辈是这么解释的,加入了 /** {@hide} */ 注视后的类或者API是google编译时不对外开放的,但是运行的时候这写类和API都是可以访问的。为了在Eclipse中不报错的话,可以准备以下几步就可以不报错了。

1,准备好编译后的Android源码。
2,在该源码的out目录下寻找包含你所用隐藏类的jar文件,通常文件名为classes.jar。例如framework的jar文件为out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar。


3,在eclipse的Android项目中,选择项目属性->Java Build Path->Libraries->Add Library->User Library->Next-> UserLibraries进入到User Libraries管理界面,点击New新建一个User Library,比如android_framework,点击Add Jars把Jar包加入到建立的User Library中,最后点击OK就可以了。

现在在Eclipse中就不会再报错了。


====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址http://blog.csdn.net/ouyang_peng

===================================================================================



7
0
查看评论

Java中注释/**@hide*/的初步认识

今天写一个调节系统背光亮度的时候,参考了Android中的Setting源码,在源码中有这么一段代码: ? 1 private static final int MAXIMUM_BACKLIGHT = android.os.PowerManager.B...
  • u010781856
  • u010781856
  • 2015-07-18 15:48
  • 239

android怎样调用@hide和internal API

Android有两种类型的API是不能经由SDK访问的。 第一种是位于com.android.internal包中的API。我将称之为internal API。第二种API类型是一系列被标记为@hide属性的类和方法。从严格意义上来讲,这不是一个单一的API,而是一组小的被隐藏的API,但我仍...
  • linghu_java
  • linghu_java
  • 2012-12-11 16:21
  • 19573

Android:利用Java反射调用@hide的API

设置使用3G数据功能: 从源代码看到隐藏的API(ConnectivityManager.java): /** * Sets the persisted value for enabling/disabling Mobile data. * * @param ...
  • annkie
  • annkie
  • 2013-01-04 23:11
  • 9369

[译]Android注解--@hide

@hide
  • lihenair
  • lihenair
  • 2017-03-13 19:49
  • 694

源码中的@hide注释和{@hide}注释的差异

类或API是否开放是通过doc的注释{@hide}来控制的比如android.media.Metadata这个类就是android没有公开的类因为在frameworks\base\media\libmedia\Metadata.java文件中,定义Metadata类之前有/*{@hide}/doc注...
  • johnWcheung
  • johnWcheung
  • 2017-06-03 18:34
  • 596

java中 什么叫隐藏(Hide)? 最好给个例子

4.隐藏 技术核心和实例前面已经给出,这里只是给出大家对这种现象的一个定义而已,马克-to-win:子类重新定义一个与父类那里继承来的域变量完全相同的变量,称为域的隐藏。 这里所谓隐藏是指子类拥有了两个相同名字的变量,一个继承自父类,另一个由自己定义。当子类执行父类的方法时,处理的是父类的变量,...
  • mark_to_win
  • mark_to_win
  • 2014-08-19 07:49
  • 956

隐藏元素的hide方法

让页面上的元素不可见,一般可以通过设置css的display为none属性。但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的style属性,这里jQuery提供了一个快捷的方法.hide()来达到这个效果 $elem.hide() 提供参数:.hide( opt...
  • java_zhaoyanli
  • java_zhaoyanli
  • 2016-08-01 23:04
  • 1327

android 如何引用@hide(隐藏)的类,方法和常量?

最近在处理SD卡的读写问题,本地Elipse能跑的程序提交到服务器上的时候,报错,找不到import的类,还有一些方法也是找不到,利用sourceInsight搜了源码发现都是用了@hide标记的类和方法。 /** * Description of a storage volume and it...
  • lisineng
  • lisineng
  • 2015-03-20 17:26
  • 5094

android如何调用@hide和internal API

Android有两种类型的API是不能经由SDK访问的。 第一种是位于com.android.internal包中的API。我将称之为internal API。第二种API类型是一系列被标记为@hide属性的类和方法。从严格意义上来讲,这不是一个单一的API,而是一组小的被隐藏的API,但我仍...
  • zhangweiocp
  • zhangweiocp
  • 2015-05-07 08:21
  • 389

Android学习——利用反射调用@Hide隐藏函数

2014-02-27 导语:本意想在代码中实现设置动态壁纸的功能。 正文: 1、查看Android源码WallpaperManager.java中有个方法 /** @hide */ public IWallpaperManager getIWallpaperManager() { ...
  • You_and_Me12
  • You_and_Me12
  • 2014-02-27 15:17
  • 11511
    个人资料
    • 访问:2167278次
    • 积分:23459
    • 等级:
    • 排名:第349名
    • 原创:371篇
    • 转载:110篇
    • 译文:0篇
    • 评论:983条
    感谢您为博客进行打赏
      支付宝&微信支付二维码
      支付宝&微信支付
    站长统计
    友情链接
    博客专栏
    最新评论