有没有办法在 Android 应用程序中访问 android.net.EthernetManager?

Hon*_*ong 2 android ethernet

有没有办法在 Android 应用程序中访问android.net.EthernetManager?Class.forName("android.net.ethernet.EthernetManager") 和 Class.forName("android.net.EthernetManager") 都会生成 ClassNotFoundException。

Ang*_*i H 5

似乎android.net.EthernetManager是一个隐藏的类,@hide由 Javadoc标记。您可以使用这里制作的自定义SDK平台访问它,并且您不需要root设备。

Android Hidden API 库是一个经过修改的jar 文件,它结合android.jar了Android SDK 和framework.jar真实设备。这个 jar 使您能够在开发中使用 Android 内部/隐藏的 API。

什么是 Android 内部和隐藏 API?内部 API 位于真实 Android 设备文件中的com.android.internal包中framework.jar,而隐藏 API 位于具有@hideJavadoc 属性的android.jar 文件中。尽管类和方法是public,但您无法访问它。您可以从这个包中使用一些漂亮的方法和资源。我将假设这是一个 API,并将其称为隐藏 API。在此处了解有关隐藏 API 的更多信息。

所以,看看这个@hide标记:

在此处输入图片说明

此类在 API 级别 22 及更高级别上可用。但是,自定义的 API 有局限性。Android Hidden API 不适用于 Lollipop 5.1.1 (API 22) 和 Marshmallow 6.0 (API 23),因为我找不到任何拥有此设备的人。如果你拥有了它,请上传framework.jar从位于物理设备的文件/system/framework/framework.jar这里。我会做一个新的!

另一个限制

Hidden API 还有一个限制,我还没有解释。当您使用此隐藏 API 的某些功能、方法、资源或类(仅在特定 API 级别可用)时,您的应用程序只能在相应设备的 API 级别访问它们。例如,您android.net.EthernetManager在您的应用程序中使用,您必须将目标和编译 SDK 设置为android-22(因为此类仅在 API 级别 22 及更高级别上可用)。一旦您在具有 API 级别 22 及更高级别的设备上运行您的应用程序,就不会显示任何错误。但是,一旦您在 API 级别 21 及更低级别上运行应用程序,就会抛出错误,例如java.lang.NoClassDefFoundError,因为android.net.EthernetManager类仅针对 API 22 及更高级别构建。