有没有办法访问android.net.EthernetManager在 Android 应用程序中? Class.forName("android.net.ethernet.EthernetManager") 和 Class.forName("android.net.EthernetManager") 都会生成 ClassNotFoundException。
最佳答案
似乎android.net.EthernetManager
是一个隐藏类,Javadoc 标记为@hide
。您可以使用制作的定制 SDK 平台访问它 here ,并且您不需要对设备进行 root。
Android Hidden API library是一个修改后的jar文件,它结合了来自Android SDK的android.jar
和来自真实设备的framework.jar
。这个 jar 使您能够在开发中使用 Android 内部/隐藏的 API。
什么是 Android 内部和隐藏 API?内部 API 位于 com.android.internal
包中,可在 framework.jar
来自真实 Android 设备的文件,而隐藏的 API 位于具有 @hide
Javadoc 属性的 android.jar 文件中。虽然类和方法是public
,但您不能访问它。您可以从这个包中使用漂亮的方法和资源。我假设这是一个 API,并将其称为隐藏 API。了解有关隐藏 API 的更多信息 here .
所以,看看这个 @hide
标记:
此类在 API 级别 22 及更高级别上可用。但是,定制的 API 有局限性。 Android Hidden API 不适用于 Lollipop 5.1.1 (API 22) 和 Marshmallow 6.0 (API 23),因为我找不到任何拥有此设备的人。如果你有,请从位于/system/framework/framework.jar
的物理设备上传framework.jar
文件到here .我会做一个新的!
另一个限制
我还没有解释隐藏 API 的另一个限制。当您使用此隐藏 API 的某些功能、方法、资源或类时,这些功能、方法、资源或类仅在特定 API 级别可用,您的应用程序只能在适当设备的 API 级别内访问它们。例如,您在应用程序中使用 android.net.EthernetManager
,您必须将目标和编译 SDK 设置为 android-22
(因为此类仅在 API 上可用22 级及以上)。在 API 级别 22 及更高级别的设备上运行应用程序后,不会显示任何错误。但是,一旦您在 API 级别 21 或更低级别上运行该应用程序,就会抛出一个错误,例如 java.lang.NoClassDefFoundError
,因为 android.net.EthernetManager
类是仅为 API 22 及更高版本构建。
关于android - 有没有办法在 Android 应用程序中访问 android.net.EthernetManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35215533/