android開關gprs流量

m45y 9年前發布 | 1K 次閱讀 Java Android

一、需要權限:

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
       <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />  
       <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />  

二、下面代碼實現功能、如果gprs已經打開則先關閉再打開、否則直接打開、

    package com.example.gprstoggle;

import java.lang.reflect.Method;  

import android.app.Activity;  
import android.content.Context;  
import android.net.ConnectivityManager;  
import android.os.Bundle;  

public class MainActivity extends Activity {  

    private ConnectivityManager mCM;   
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        init();  
    }  

    private void init() {  
        mCM = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);    
        gprsSetter();  
        finish();  


    }  
    //打開或關閉GPRS  
    private boolean gprsEnabled(boolean bEnable)    
    {    
        Object[] argObjects = null;    

        boolean isOpen = this.gprsIsOpenMethod("getMobileDataEnabled");    
        if(isOpen == !bEnable)    
        {    
            setGprsEnabled("setMobileDataEnabled", bEnable);    
        }   

        return isOpen;      
    }    
    //打開或關閉GPRS  
        private boolean gprsSetter()    
        {    
            Object[] argObjects = null;    

            boolean isOpen = this.gprsIsOpenMethod("getMobileDataEnabled");    
            if(isOpen)    
            {    
                setGprsEnabled("setMobileDataEnabled", false);   
                System.out.println("關閉");  
                try {  
                    Thread.sleep(2000);  
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                }  
                setGprsEnabled("setMobileDataEnabled", true);  
                System.out.println("開啟");  
            }else{  
                setGprsEnabled("setMobileDataEnabled", true);  
                System.out.println("開啟");  
            }  

            return isOpen;      
        }   
    //檢測GPRS是否打開     
    private boolean gprsIsOpenMethod(String methodName)    
    {    
        Class cmClass       = mCM.getClass();    
        Class[] argClasses  = null;    
        Object[] argObject  = null;    

        Boolean isOpen = false;    
        try    
        {    
            Method method = cmClass.getMethod(methodName, argClasses);    

            isOpen = (Boolean) method.invoke(mCM, argObject);    
        } catch (Exception e)    
        {    
            e.printStackTrace();    
        }    

        return isOpen;    
    }    

    //開啟/關閉GPRS     
    private void setGprsEnabled(String methodName, boolean isEnable)    
    {    
        Class cmClass       = mCM.getClass();    
        Class[] argClasses  = new Class[1];    
        argClasses[0]       = boolean.class;    

        try    
        {    
            Method method = cmClass.getMethod(methodName, argClasses);    
            method.invoke(mCM, isEnable);    
        } catch (Exception e)    
        {    
            e.printStackTrace();    
        }    
    }    

}  </pre> 


 本文由用戶 m45y 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!