寻找android.net.iConnectivityManager

时间:2010-10-01 10:22:42

标签: android

我在kiwidoc.com上使用函数setBackgroundDataSetting创建了这个类。

我只需要为我的应用程序使用此功能。

但是就像网站上说的那样:"This class is not part of the public API."。我不能在我的IDE中使用它。 所以我google搜索这个iConnectivityManager,但我只是找不到它只有更多的文件。

我应该忘记它(我也不想要)或者有没有办法让这堂课?

谢谢,

DeDanny。

2 个答案:

答案 0 :(得分:1)

  

我应该忘记它(我不想)或有没有办法让这堂课?

标准SDK应用程序无法保留更改后台数据设置所需的权限。因此,无论你是否能上这门课,都可能是无关紧要的。

答案 1 :(得分:1)

您可以通过ConnectivityManager获取iConnectivityManager的实例,请参阅以下内容: -

final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);


Class conmanClass conmanClass = Class.forName(conman.getClass().getName());

final java.lang.reflect.Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");

iConnectivityManagerField.setAccessible(true);

final Object iConnectivityManager = iConnectivityManagerField.get(conman);

final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());

现在,您可以从此类调用任何方法或字段,实际上此类不再存在,但这是访问此类的后门方式,例如。您想要访问此类中的任何方法,请说setMobileDataEnabledMethod(),所以

final方法setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod(“setMobileDataEnabled”,Boolean.TYPE);

类似于任何其他领域,

final java.lang.reflect.Field iConnectivityManagerField = iConnectivityManagerClass.getDeclaredField("xyz");

我希望这会清楚查询留下您的评论更多...