0

我一直在查看 ICS 和 JB(API15 和 API16)的 android 源代码,并且发现(对我而言)代码和 jar 文件之间的不匹配。更具体地说,在 SpeechRecognizer.java 中有一个对 Settings.Secure.VOICE_RECOGNITION_SERVICE 的引用,它在 android/provider/Settings.java 的 Secure 子类下定义为

public static final String VOICE_RECOGNITION_SERVICE = "voice_recognition_service";

但是当我尝试从我自己的代码中引用 VOICE_RECOGNITION_SERVICE 时,它无法解决。在 Eclipse 中,当我查看 jar 文件时,没有看到 VOICE_RECOGNITION_SERVICE 定义。事实上,很多在java源码中定义为public的Settings.Secure中的字段在jar文件中是找不到的。我想知道为什么如果 jar 文件是使用源文件创建的,我无法访问 VOICE_RECOGNITION_SERVICE。如果一个字段在源中被声明为公共的,那么它不应该可以从 .jar 文件中访问吗?

4

1 回答 1

0

我也注意到了。似乎通常,某些方法/字段对于特定于应用程序的代码是不可见的。但是,有时可以通过使用 Java 反射来调用这些方法/字段。

于 2012-08-22T18:29:56.410 回答