我一直在查看ICS和JB(API15& API16)的android源代码,并且发现(对我来说)代码和jar文件之间的不匹配。更具体地说,在SpeechRecognizer.java中有一个对Settings.Secure.VOICE_RECOGNITION_SERVICE的引用,它是在子类Secure下的android / provider / Settings.java中定义的
public static final String VOICE_RECOGNITION_SERVICE = "voice_recognition_service";
但是当我尝试从我自己的代码中引用VOICE_RECOGNITION_SERVICE时,它无法解析。在Eclipse中,当我浏览jar文件时,我没有看到定义的VOICE_RECOGNITION_SERVICE。实际上,在jar文件中找不到在java源代码中定义为public的Settings.Secure中的许多字段。我想知道为什么,如果jar文件是使用源文件创建的,我无法访问VOICE_RECOGNITION_SERVICE。如果字段在源中声明为public,则不应该从.jar文件中访问它?
答案 0 :(得分:0)
我注意到了同样的事情。通常,某些方法/字段对于特定于应用程序的代码是不可见的。 但是,有时可以通过使用Java反射来调用这些方法/字段。