歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android GPRS的自動打開與關閉

本例中需要的權限:

    <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" />

工程源碼下載:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/5月/8日/Android GPRS的自動打開與關閉/

   本例子中的GPRS打開與關閉是自動的, 不會出現系統那個手動GPRS設置界面。

   Android中GPRS的打開和關閉比較難搞, 因為它沒有專門的方法提供給你。 GPRS打開與關閉的方法都在framework, 所以我們要調用framework裡的方法來操作GPRS開關。

  需要調用的方法:

  1. getMobileDataEnabled   檢查GPRS是否開啟

  2. setMobileDataEnabled   設置GPRS開關

  首先我們需要聲明一個網絡鏈接相關操作類

  1. private ConnectivityManager mCM;  

在初始化中實例化

  1. mCM = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);  

接下來用到了三個自定義的方法

gprsIsOpenMethod  是從framework中取得getMobileDataEnabled這個方法, 主要用來檢測GPRS是否打開

setGprsEnabled  取得setMobileDataEnabled方法, 用來打開或關閉GPRS

在這裡我們只要調用grpsEnabled即可。

  1. //打開或關閉GPRS   
  2.     private boolean gprsEnabled(boolean bEnable)  
  3.     {  
  4.         Object[] argObjects = null;  
  5.                   
  6.         boolean isOpen = gprsIsOpenMethod("getMobileDataEnabled");  
  7.         if(isOpen == !bEnable)  
  8.         {  
  9.             setGprsEnable("setMobileDataEnabled", bEnable);  
  10.         }  
  11.           
  12.         return isOpen;    
  13.     }  
  14.       
  15.     //檢測GPRS是否打開   
  16.     private boolean gprsIsOpenMethod(String methodName)  
  17.     {  
  18.         Class cmClass       = mCM.getClass();  
  19.         Class[] argClasses  = null;  
  20.         Object[] argObject  = null;  
  21.           
  22.         Boolean isOpen = false;  
  23.         try  
  24.         {  
  25.             Method method = cmClass.getMethod(methodName, argClasses);  
  26.   
  27.             isOpen = (Boolean) method.invoke(mCM, argObject);  
  28.         } catch (Exception e)  
  29.         {  
  30.             e.printStackTrace();  
  31.         }  
  32.   
  33.         return isOpen;  
  34.     }  
  35.       
  36.     //開啟/關閉GPRS   
  37.     private void setGprsEnabled(String methodName, boolean isEnable)  
  38.     {  
  39.         Class cmClass       = mCM.getClass();  
  40.         Class[] argClasses  = new Class[1];  
  41.         argClasses[0]       = boolean.class;  
  42.           
  43.         try  
  44.         {  
  45.             Method method = cmClass.getMethod(methodName, argClasses);  
  46.             method.invoke(mCM, isEnable);  
  47.         } catch (Exception e)  
  48.         {  
  49.             e.printStackTrace();  
  50.         }  
  51.     }  

Class.getMethod   是從framework搜索指定的方法,  返回的Method就可以使用該方法, 第二個參數是該方法的參數類型。

Method.invoke  使用從framework裡搜索到的方法, 第二個是參數。

Copyright © Linux教程網 All Rights Reserved