android APN解析

来源:互联网 发布:快乐宝拉 知乎 编辑:程序博客网 时间:2024/06/14 08:45

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.

 

觉得这个流程图忒不完整了。但是完整的图也没弄,关于设置当前默认的部分上面根本没有体现,在完成这部分功能的时候,整个逻辑的判断的难点大部分就是在设置默认这一块。



转载地址:http://blog.csdn.net/zidan_2011/article/details/7704865

0 0
原创粉丝点击