【问题标题】:Looking for the android.net.iConnectivityManager寻找 android.net.iConnectivityManager
【发布时间】:2010-10-01 10:22:42
【问题描述】:

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

我的应用程序只需要这个函数。

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

我应该忘记它(我也不想)还是有办法获得这门课?

谢谢,

德丹尼。

【问题讨论】:

    标签: android


    【解决方案1】:

    我应该忘记它(我不想)还是有办法获得这门课?

    标准的 SDK 应用程序无法拥有更改后台数据设置所需的权限。因此,你能不能上这个班可能并不重要。

    【讨论】:

      【解决方案2】:

      您可以通过 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(),所以

      最终方法 setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);

      与任何其他领域类似,

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

      我希望这将清除查询让您的 cmets 了解更多...

      【讨论】:

      • 请编辑您的帖子并格式化代码以使其可读
      猜你喜欢
      • 2011-02-19
      • 2022-01-23
      • 2011-02-23
      • 2019-04-16
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-22
      相关资源
      最近更新 更多