我的应用程序需要检查是否有可用的USB可绑定接口。为此,它使用反射在ConnectivityManager上调用getTetherableIfaces。

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
Class cmClass = Class.forName(cm.getClass().getName());
Method method = cmClass.getDeclaredMethod("getTetherableIfaces");
method.setAccessible(true);
method.invoke(cm, args);


我已经在运行Android 5.0.1的LG Leon上进行了测试,但由于java.lang.NoSuchMethodException而失败。

棒棒糖中是否已删除或更改此功能?

最佳答案

根据http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.1_r1/android/net/ConnectivityManager.java#ConnectivityManager.getTetherableIfaces%28%29,该方法仍然存在。

也许您应该改用ConnectivityManager.class.getDeclaredMethod("getTetherableIfaces")

您是否尝试查看连接管理器的所有方法列表?您可以向我们显示以下代码的日志吗?

Method[] methodArray = ConnectivityManager.class.getMethods();
for (Method method : methodArray) {
   Log.v(TAG, method.getName());
}

10-08 17:56