android 關於APN的整理

 

APN整理

前段時間,爲公司項目添加APN設置功能。現在做一些整理,作爲分享,作爲筆記。

APN的字段

不同的手機,他們存放apn相關數據的字段是不一樣的,這裏表示出來的字段都是他們公有的部分。

publicclass APN {

         publicStringid;

         publicStringset;  //我自己添加的,用戶確認是否需要設置爲默認

         publicString name; //顯示的名稱

         publicString apn;   //接入點名稱 cmwap/cmnet…….

         publicString mcc;   //國家編號

         publicString mnc;  //運營商編號

         publicString numeric;  //mcc+mnc運營商在全球上唯一標識

         publicString user;  //用戶名

         publicString password;  //密碼

         publicString server;   //服務

         publicString proxy;   //代理

         publicString port;  //端口

         publicString mmsport;   //短信端口

         publicString mmsproxy;   //短信代理

         publicString mmsc;

         publicString authtype; 

         publicString current;  //當=“1”的時候,顯示

         publicString type;  //類型

}

APN的存放路徑

1.  查看全部的apn數據

public UricreateUri = Uri.parse("content://telephony/carriers");

2.  查看當前正在使用的apn數據

Uri preferUri=Uri.parse("content://telephony/carriers/preferapn");

APN的增加

         /**

          * 創建一個新的數據

          */

         public UriaddNewApn(APN apn) {

                   Log.i("ApnHelper","執行增加操作");

                   ContentResolver contentResolver =context.getContentResolver();

                   ContentValues contentValues =new ContentValues();

                   contentValues.put("name", apn.getName());

                   contentValues.put("apn", apn.getApn());

                   contentValues.put("mcc", apn.getMcc());

                   contentValues.put("mnc", apn.getMnc());

                   contentValues.put("numeric", apn.getNumeric());

                   contentValues.put("proxy", apn.getProxy());

                   contentValues.put("port", apn.getPort());

                   contentValues.put("authtype", apn.getAuthtype());

                   contentValues.put("current", apn.getCurrent());

                   contentValues.put("type", apn.getType());

                   contentValues.put("user", apn.getUser());

                   contentValues.put("server", apn.getServer());

                   contentValues.put("password", apn.getPassword());

                   contentValues.put("mmsport", apn.getMmsport());

                   contentValues.put("mmsproxy", apn.getMmsproxy());

                   contentValues.put("mmsc", apn.getMmsc());

                   Uri newUri = contentResolver.insert(createUri, contentValues);

                   Log.i("ApnHelper","newUri.toString():" + newUri.toString());

                   return newUri;

         }

APN的刪除

         /**

          * 根據給定的id,刪除某個apn

          * @param id

          * @return是否成功

          */

         publicbooleandeleteApn(String id) {

                   boolean flag =true;

                   APN apn = new APN();

                   ContentValues contentValues =new ContentValues();

                   contentValues.put("current", apn.getCurrent());

                   ContentResolver contentResolver =context.getContentResolver();

                   try {

                            contentResolver.delete(createUri,"_id=?",new String[] { id });

                            Log.i("ApnHelper","執行刪除操作");

                   } catch (NullPointerException e) {

                            //TODO: handle exception

                            e.printStackTrace();

                            flag =false;

                   }

                   return flag;

         }

APN設置當前默認

         /**

          * 設置默認的APN

          * @param id

          */

         publicintsetDefault(int id) {

                   Log.i("ApnHelper","執行設置當前默認操作");

                   ContentResolver contentResolver =context.getContentResolver();

                   ContentValues contentValues =new ContentValues();

                   contentValues.put("apn_id", id);

                   int rows = contentResolver.update(preferapnUri, contentValues, null,null);

                   Log.i("ApnHelper","設置當前值");

                   return rows;

         }

 


 

關於APN的流程

 

 

 


關於設置當前默認的apn,應該在比較兩個list的時候,將需要設置爲當前默認使用的apn保存給一個對象,然後在修改的時候,重新得到所有可見的apn,遍歷他們,找到這個apnid,最後設置當前默認的apn.

 

覺得這個流程圖忒不完整了。但是完整的圖也沒弄,關於設置當前默認的部分上面根本沒有體現,在完成這部分功能的時候,整個邏輯的判斷的難點大部分就是在設置默認這一塊。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章