Android 编译的SDK与源代码不同?

Android 编译的SDK与源代码不同?,android,Android,我试图在API17(在API18和API19中删除)中的类WifiP2pManager(android.net.wifi.p2p.WifiP2pManager.DialogListener)内使用DialogListener接口。在Android的源代码中显示为“Public”(WifiP2pManager.java): 但在SDK内部的已编译类中,它没有显示,如果您查看android.jar、WifiP2pManager.class内部,您将找不到它,因此在我的活动中尝试使用它时,它会向我显示

我试图在API17(在API18和API19中删除)中的类WifiP2pManager(android.net.wifi.p2p.WifiP2pManager.DialogListener)内使用DialogListener接口。在Android的源代码中显示为“Public”(WifiP2pManager.java):

但在SDK内部的已编译类中,它没有显示,如果您查看android.jar、WifiP2pManager.class内部,您将找不到它,因此在我的活动中尝试使用它时,它会向我显示错误“无法解析符号”


我缺少什么?

在源代码中,您可以看到接口上方的注释
@hide
,以及与之相关的方法:

 /**
 * Interface for callback invocation when dialog events are received.
 * see {@link #setDialogListener}.
 * @hide
 */
public interface DialogListener {
这意味着它下面的东西是隐藏的,不能在公共API中访问


Android开发者不希望你使用它。你可能想寻找其他的选择。由于它不是公共API的一部分,您不能依赖您的用户访问它,如果您试图绕过它,您的应用程序将无法为这些用户提供服务。

您正在使用哪个版本的SDK进行编译?API17。这是我的build.graddle:apply插件:“android”android{compileSdkVersion 17 buildToolsVersion“17”defaultConfig{minSdkVersion 17 targetSdkVersion 17 versionCode 1 versionName“1.0”}buildTypes{release{runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard rules.txt'}}}}}依赖项{}恐怕这是与setDialogListener方法一起重写系统对话框的唯一方法(这也被标记为@hide)。是否有可能使用此隐藏API?具体来说,
@hide
注释类/方法/字段不包含在存根中。android.jar应用程序是用它编译的。在设备上,它可能包含在平台库中,并且可能可以通过反射进行访问。但隐藏的原因是:不应该使用它。所有joyn framework[Qualcomm]()正在使用此方法,但我不想使用整个框架,我正在构建一个轻量级应用程序。是否有使用反射的好指南?谢谢!
 /**
 * Interface for callback invocation when dialog events are received.
 * see {@link #setDialogListener}.
 * @hide
 */
public interface DialogListener {