如何禁用Android上的移动数据在别人告诉我要买一个应用程序之前,快回过头来。=)我刚得到了一个EVO,它很快就会咬断电池。我下载了JuiceDefender来管理我的移动数据连接。这似乎进展得相当顺利。然而,设置是非常有限的(即使在付费版本)。到目前为止,我正试图开发一个更可定制的电池节约应用程序。我首先要做的主要事情是能够随心所欲地启用/禁用移动数据连接。问题是我找不到任何关于如何做到这一点的代码片段或文章。我发现的唯一件事是我不知道这有多准确,但这是我浏览developer.android.com所能做的全部工作。ConnectivityManager cm = (ConnectivityManager) this.getSystemService(CONNECTIVITY_SERVICE);
cm.stopUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "android.net.conn.CONNECTIVITY_CHANGE");
State state = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();textView.setText(state.name());如果有人能告诉我什么能帮上忙的话,我会非常感激的。更新看来HTC Evo on Sprint不使用APN设置。我通过下载APNDroid并看着它失效来测试它。然后,我制作了一个快速应用程序,将所有APN条目转储到屏幕上。这就产生了一个结果,那就是MMS。查看JuiceDefender运行时的电话信息,我发现GSRP网络正在被打开和关闭。这让我相信通过代码是有可能做到的,尽管我发现的每一页询问同样的问题都说它无法完成。关键是他们都说要像APNDroid那样做。有人能给我一些洞察力吗。谢谢!
3 回答
慕码人2483693
TA贡献1860条经验 获得超9个赞
Method dataConnSwitchmethod; Class telephonyManagerClass; Object ITelephonyStub; Class ITelephonyClass; TelephonyManager telephonyManager = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); if(telephonyManager.getDataState() == TelephonyManager.DATA_CONNECTED){ isEnabled = true; }else{ isEnabled = false; } telephonyManagerClass = Class.forName(telephonyManager.getClass().getName()); Method getITelephonyMethod = telephonyManagerClass.getDeclaredMethod("getITelephony"); getITelephonyMethod.setAccessible(true); ITelephonyStub = getITelephonyMethod.invoke(telephonyManager); ITelephonyClass = Class.forName(ITelephonyStub.getClass().getName()); if (isEnabled) { dataConnSwitchmethod = ITelephonyClass .getDeclaredMethod("disableDataConnectivity"); } else { dataConnSwitchmethod = ITelephonyClass .getDeclaredMethod("enableDataConnectivity"); } dataConnSwitchmethod.setAccessible(true); dataConnSwitchmethod.invoke(ITelephonyStub);
- 3 回答
- 0 关注
- 937 浏览
添加回答
举报
0/150
提交
取消