为了账号安全,请及时绑定邮箱和手机立即绑定

如何禁用Android上的移动数据

如何禁用Android上的移动数据

红糖糍粑 2019-07-05 13:29:03
如何禁用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个赞

数据连接禁用和启用API隐藏在SDK中,不向用户公开,这可以通过使用Java反射技术访问ITeleony接口来实现。

给你:

    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);


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 937 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信