移动手机网络id设置置

Android开发之APN网络切换
本文介绍平台中关于APN网络切换的相关知识。
APN(Access Point Name),即&接入点名称&,用来标识GPRS的业务种类,目前分为两大类:CMWAP(通过GPRS访问WAP业务)、CMNET(除了WAP以外的服务目前都用CMNET,比如连接因特网等)。
APN的英文全称是Access Point Name,中文全称叫接入点,是您在通过手机上网时必须配置的一个参数,它决定了您的手机通过哪种接入方式来访问网络。
移动手机的默认上网配置有两种:CMWAP和CMNET。一些使用移动办公的大客户,通常会使用专用APN,其接入点随意定义,只要和该省运营商其他APN不冲突即可。
CMWAP也叫移动梦网,通过该接入点可接入一个比较大的移动私网,网内有大量的手机应用及资源访问。因为CMWAP不接入互联网,只接入移动运营商的私网,所以流量费用比较低廉。
CMNET也叫GPRS连接互联网,通常每个省的运营商会提供若干个Internet出口以供CMNET拨号用户使用。其流量费用较CMWAP要高一些。
目前国内销售的手机,如果是非智能机,通常已配置好CMWAP连接,智能机通常会配置CMWAP和CMNET连接。如需手动添加这些配置,请参考手机说明书。
专有APN在功能上可以和Internet的VPN做类比,实际上他就是基于GPRS的VPN网络。
专有APN常见方式
1,运营商部署一条专线接入到企业的网络中,局端和企业端之间采用私有IP进行连接。
&&& 2,局端互连路由器与GGSN采用GRE隧道连接。
专有APN的几个重要特点:
1,除非运营商分配一个Internet IP地址,否则计算机没有任何办法通过Internet访问该APN中的主机。
2,只有手机卡号在APN中的白名单之列,该手机才可以接入该APN。
3,企业客户可以建立一套RADIUS和DHCP服务器,GGSN向RADIUS服务器提供用户主叫号码,采用主叫号码和用户账号相结合的认证方式;用户通过认证后由DHCP服务器分配企业内部的静态IP地址。补充:该认证方式不一定适合于每个省的运营商,这取决于该省运营商的APN管理平台。
GPRS专网终端上网登录服务器平台的流程为:
1)用户发出GPRS登录请求,请求中包括由运营商为GPRS专网系统专门分配的专网APN;
2)根据请求中的APN,SGSN向DNS服务器发出查询请求,找到与企业服务器平台连接的GGSN,并将用户请求通过GTP隧道封装送给GGSN;
3)GGSN将用户认证信息(包括手机号码、用户账号、密码等)通过专线送至Radius进行认证;
4)Radius认证服务器看到手机号等认证信息,确认是合法用户发来的请求,向DHCP服务器请求分配用户地址;
5)Radius认证通过后,由Radius向GGSN发送携带用户地址的确认信息;
6)用户得到了IP地址,就可以携带数据包,对GPRS专网系统信息查询和业务处理平台进行访问。
下面是相关代码:
& public void openAPN(){&&&
List list = getAPNList();&&
&&&&&&& for (APN apn : list) {&&
&&&&&&&&&&& ContentValues cv = new ContentValues();&&
&&&&&&&&&&& cv.put(&apn&, APNMatchTools.matchAPN(apn.apn));&&
&&&&&&&&&&& cv.put(&type&, APNMatchTools.matchAPN(apn.type));&&
&&&&&&&&&&& getContentResolver().update(uri, cv, &_id=?&, new String[]{apn.id});&&
&&&&&&& }&&
& public void closeAPN(){&&&
List list = getAPNList();&
&&&&&&& for (APN apn : list) {&&&&&&
&&&&&&&&&&& ContentValues cv = new ContentValues();&&
&&&&&&&&&&& cv.put(&apn&, APNMatchTools.matchAPN(apn.apn)+&mdev&);&&
&&&&&&&&&&& cv.put(&type&, APNMatchTools.matchAPN(apn.type)+&mdev&);&&
&&&&&&&&&&& getContentResolver().update(uri, cv, &_id=?&, new String[]{apn.id});&&
&&&&&&& }&&&
&& private List getAPNList(){&&
String tag = &Main.getAPNList()&;&&
&&&&&&& //current不为空表示可以使用的APN&&
&&&&&&& String projection[] = {&_id,apn,type,current&};&&
&&&&&&& Cursor cr = this.getContentResolver().query(uri, projection, null, null, null);&&
&&&&&&& List list = new ArrayList();&&
&&&&&&& while(cr!=null && cr.moveToNext()){&&
&&&&&&&&&&& Log.d(tag, cr.getString(cr.getColumnIndex(&_id&)) + & & + cr.getString(cr.getColumnIndex(&apn&)) + & & + cr.getString(cr.getColumnIndex(&type&))+ & & + cr.getString(cr.getColumnIndex(&current&)));&&
&&&&&&&&&&& APN a = new APN();&&
&&&&&&&&&&& a.id = cr.getString(cr.getColumnIndex(&_id&));&&&
&&&&&&&&&&& a.apn = cr.getString(cr.getColumnIndex(&apn&));&&
&&&&&&&&&&& a.type = cr.getString(cr.getColumnIndex(&type&));&&
&&&&&&&&&&& list.add(a);&&
&&&&&&& }&&
&&&&&&& if(cr!=null)&&
&&&&&&& cr.close();&&
&&& public static class APN{&&
&&&&&&& S&&
&&&&&&& S&&
&&&&&&& S&&
&&&& * @Name: setDefaultApn
&&&& * @Description: 设置默认APN
&&&& * @param apnId
&&&& * @return boolean 返回类型
&&&& * @throws
&&& public boolean setDefaultApn(int apnId) {
&&&&&&& boolean res =
&&&&&&& ContentResolver resolver = context.getContentResolver();
&&&&&&& ContentValues values = new ContentValues();
&&&&&&& values.put(&apn_id&, apnId);
&&&&&&& try {
&&&&&&&&&&& resolver.update(PREFERRED_APN_URI, values, null, null);
&&&&&&&&&&& Cursor c = resolver.query(PREFERRED_APN_URI, new String[] { &name&,
&&&&&&&&&&&&&&&&&&& &apn& }, &_id=& + apnId, null, null);
&&&&&&&&&&& if (c != null) {
&&&&&&&&&&&&&&& res =
&&&&&&&&&&&&&&& c.close();
&&&&&&&&&&& }
&&&&&&& } catch (SQLException e) {
&&&& * 得到当前使用的APN
&&&& * @return
&&& public ApnNode getDefaultAPN() {
&&&&&&& String id = &&;
&&&&&&& String apn = &&;
&&&&&&& String name = &&;
&&&&&&& String type = &&;
&&&&&&& ApnNode apnNode = new ApnNode();
&&&&&&& Cursor mCursor = context.getContentResolver().query(PREFERRED_APN_URI,
&&&&&&&&&&&&&&& null, null, null, null);
&&&&&&& if (mCursor == null) {
&&&&&&&&&&&
&&&&&&& while (mCursor != null && mCursor.moveToNext()) {
&&&&&&&&&&& id = mCursor.getString(mCursor.getColumnIndex(&_id&));
&&&&&&&&&&& name = mCursor.getString(mCursor.getColumnIndex(&name&));
&&&&&&&&&&& apn = mCursor.getString(mCursor.getColumnIndex(&apn&))
&&&&&&&&&&&&&&&&&&& .toLowerCase();
&&&&&&&&&&& type = mCursor.getString(mCursor.getColumnIndex(&type&))
&&&&&&&&&&&&&&&&&&& .toLowerCase();
&&&&&&& OLD_APN_ID = Integer.valueOf(id);
&&&&&&& apnNode.setName(name);
&&&&&&& apnNode.setApn(apn);
&&&&&&& apnNode.setType(type);
&&&&&&& System.out.println(&old_name:& + name + &--old_apn:& + apn + &--old_type:& + type);
&&&&&&& return apnN
&&&& * @Name: SwitchApn
&&&& * @Description: 转换APN状态
&&&& * @param 设定文件
&&&& * @return void 返回类型
&&&& * @throws
&&& public void SwitchApn() {
&&&&&&& switch (GetCurrentNetType()) {
&&&&&&& case NET_3G:
&&&&&&&&&&& if (!IsCurrentEmergencyApn()) {
&&&&&&&&&&&&&&& EM_APN_ID = IsEmergencyApnExisted(EMERGENCY_APN);
&&&&&&&&&&&&&&& System.out.println(EM_APN_ID);
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& if (EM_APN_ID == -1) {
&&&&&&&&&&&&&&&&&&& setDefaultApn(AddEmergencyApn());
&&&&&&&&&&&&&&& } else {
&&&&&&&&&&&&&&&&&&& setDefaultApn(EM_APN_ID);
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&& case NET_WIFI:
&&&&&&&&&&&
&&&&&&& case NET_OTHER:
&&&&&&&&&&&
&&&&&&& default:
&&&&&&&&&&&
public final class APNMatchTools {&&
&&& public static class APNNet{&&
&&&&&&& /*&
&&&&&&& * 中国移动cmwap&
&&&&&&& */&
&&&&&&& public static String CMWAP = &cmwap&;&&
&&&&&&& /*
&&&&&&& * 中国移动cmnet&
&&&&&&& */&
&&&&&&& public static String CMNET = &cmnet&;&&
&&&&&&& //中国联通3GWAP设置 中国联通3G因特网设置 中国联通WAP设置 中国联通因特网设置&&
&&&&&&& //3gwap 3gnet uniwap uninet&&
&&&&&&& /*
&&&&&&& * 3G wap 中国联通3gwap APN&
&&&&&&& */&
&&&&&&& public static String GWAP_3 = &3gwap&;&&
&&&&&&& /*&
&&&&&&& * 3G net 中国联通3gnet APN&
&&&&&&& */&
&&&&&&& public static String GNET_3=&3gnet&;&&
&&&&&&& /**&
&&&&&&& * uni wap 中国联通uni wap APN&
&&&&&&& */&
&&&&&&& public static String UNIWAP=&uniwap&;&&
&&&&&&& /**&
&&&&&&& * uni net 中国联通uni net APN&
&&&&&&& */&
&&&&&&& public static String UNINET=&uninet&;&&
&&&&&&& }&&
&&&&&&& public static String matchAPN(String currentName) {&&
&&&&&&&&&&& if(&&.equals(currentName) || null==currentName){&&
&&&&&&&&&&& return &&;&&
&&&&&&& }&&
&&&&&&& currentName = currentName.toLowerCase();&&
&&&&&&& if(currentName.startsWith(APNNet.CMNET))&&
&&&&&&&&&&& return APNNet.CMNET;&&
&&&&&&& else if(currentName.startsWith(APNNet.CMWAP))&&
&&&&&&&&&&& return APNNet.CMWAP;&&
&&&&&&& else if(currentName.startsWith(APNNet.GNET_3))&&
&&&&&&&&&&& return APNNet.GNET_3;&&
&&&&&&& else if(currentName.startsWith(APNNet.GWAP_3))&&
&&&&&&&&&&& return APNNet.GWAP_3;&&
&&&&&&& else if(currentName.startsWith(APNNet.UNINET))&&
&&&&&&&&&&& return APNNet.UNINET;&&
&&&&&&& else if(currentName.startsWith(APNNet.UNIWAP))&&
&&&&&&&&&&& return APNNet.UNIWAP;&&
&&&&&&& else if(currentName.startsWith(&default&))&&
&&&&&&&&&&& return &default&;&&
&&&&&&& else return &&;&&
&&&&&&& // return currentName.substring(0, currentName.length() - SUFFIX.length());&&&
&!-- 开关APN的权限 --&
&uses-permission android:name=&android.permission.WRITE_APN_SETTINGS& /&
& 对于Android APN接入点相关的开发,有一个不错的开源项目APNDroid的源代码本地下载,里面包含了一个不错的Widget框架,大家可以通过APNDroid学习到有关接入点的相关问题,可以解决GPRS,尤其是国内的CMNET、CMWAP的切换和管理。工程API Level为3,可以运行在Android 1.5或更高的版本上。
下载地址:点击下载
摘自& HarHar
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'您的举报已经提交成功,我们将尽快处理,谢谢!
大家还关注中国移动3G的网络ID是什么 - 爱问知识人
(window.slotbydup=window.slotbydup || []).push({
id: '2491531',
container: s,
size: '150,90',
display: 'inlay-fix'
,手留余香。如若您对我的答复满意,请选择"好评",谢谢您的采纳。
您的举报已经提交成功,我们将尽快处理,谢谢!
你好,中国移动承诺不换卡、不换号、不登记的三不原则在有移动3G信号网络下使用具有TD-SCDMA制式的手机(或移动G3定制机),手机网络信号会自动切换为3G网络...
小米3是3G的呀。
可以打10086咨询的。能更详细些。
个人热点就是相当于把你的手机作为一个无线路由器 别人可以通过你上网但是费得流量全是你的手机的流量个人热点不支持移动的网络制式里边的密码就相当于你路由器的密码 别...
卡是不分2G 3G的 只有手机才分2G 3G
亲,如果我的回答对您有帮助,请赐个好评吧。谢谢!
大家还关注1387人阅读
Android相关(14)
& 在M版本,触发建立默认的数据连接的机制跟以前的版本有比较大的变化,本文主要介绍触发建立数据连接的开始阶段,而建立data call的过程跟之前是一样的,只要条件准备好了发起就可以了。
step 1:在ConnectivityService构造的时候就创建了一个默认的default Request,mDefaultRequest
网络工厂连接上以后,就请求网络连接
step 2:在ConnectivityService:handleAsyncChannelHalfConnect里,如果已经连接到网络工厂,就把网络请求发到对应的网络工厂
在日志里会打印出下面的消息
01-12 14:55:53.066 D/ConnectivityService( 1170): NetworkFactory connected
01-12 14:55:53.066 D/ConnectivityService( 1170): send CMD_REQUEST_NETWORK
接着是网络工厂处理请求CMD_REQUEST_NETWORK
step 3:NetworkFactory:handleAddRequest进行处理,调用evalRequest来判断是开启网络,还是释放网络,如果开启则调用needNetworkFor,如果是释放则调用releaseNetworkFor
现在先关注移动网络开启数据的,由于移动网络的网络工厂是TelephonyNetworkFactory,在dctController里定义的
step 4:TelephonyNetworkFactory:needNetworkFor
检查sub id是否符合,还有apn是否支持,如果符合条件,则调用requestNetwork
01-12 14:55:59.236 D/QtiDctController( 3208): [TNF ]Cellular needs Network for NetworkRequest [ id=1, legacyType=-1, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN] ]
step 5:DctController:request
把请求加入到队列mRequestInfos中,紧接着调processRequests来处理队列中的请求
step 6:QtiDctController:onProcessRequest
根据请求判断是否需要切DDS,需要的话调用handleDdsSwitch
01-12 14:56:03.496 D/QtiDctController( 3208): getTopPriorityRequestPhoneId = 1, priority = 0
01-12 14:56:03.496 D/QtiDctController( 3208): phoneId = 1
01-12 14:56:03.496 D/QtiDctController( 3208): activePhoneId = -1
01-12 14:56:03.496 D/QtiDctController( 3208): ddsPhoneId = 1
01-12 14:56:03.496 D/QtiDctController( 3208): maxDataCap = -1
01-12 14:56:03.496 D/QtiDctController( 3208): Modem is DSDS-Data capable.
01-12 14:56:03.496 D/QtiDctController( 3208): ON_DEMAND_REQ_DSDS
step 7: qtiDctController:handleDdsSwitch
根据情况是要关闭当前的数据,还是开始建立连接,关闭调用doDisconnectAll,建立连接调doConnect
01-12 14:56:03.496 D/QtiDctController( 3208): doConnect phoneId = 1
step 8:qtiDctController:doConnect
调用informDdsToRil通知底层默认的dds,然后通过DcSwitchAsyncChannel的connect发送请求REQ_CONNECT
状态的的跳转过程如下:IdleState-&AttachingState-&AttachedState-&DetachingState-&IdleState
在AttachingState会调用setDataAllowed为true,DetachingState会setDataAllowed为false
setDataAllowed会把某个phone的ps变为attached,从而触发建立data call
12-31 16:37:44.635 D/DcSwitchSM( 5990): [DcSwitchStateMachine-1] IdleState: REQ_CONNECT, apnRequest=[ request=NetworkRequest [ id=8, legacyType=2, [ Transports: CELLULAR Capabilities: MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN Specifier: &2&] ], executed=false,
priority=4]
12-31 16:37:44.635 D/DcSwitchSM( 5990): [DcSwitchStateMachine-1] AttachingState: enter
12-31 16:37:44.635 D/DcSwitchSM( 5990): [DcSwitchStateMachine-1] AttachingState executeAll due to autoAttach
12-31 16:37:44.635 D/DcSwitchSM( 5990): [DcSwitchStateMachine-1] AttachingState: REQ_CONNECT, apnRequest=[ request=NetworkRequest [ id=8, legacyType=2, [ Transports: CELLULAR Capabilities: MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN Specifier: &2&] ], executed=false,
priority=4]
12-31 16:37:48.385 D/DcSwitchSM( 5990): [DcSwitchStateMachine-1] AttachingState: EVENT_DATA_ATTACHED
12-31 16:37:48.385 D/DcSwitchSM( 5990): [DcSwitchStateMachine-1] AttachedState: enter
12-31 16:37:52.165 D/DcSwitchSM( 5990): [DcSwitchStateMachine-1] AttachedState: REQ_DISCONNECT_ALL
12-31 16:37:52.165 D/DcSwitchSM( 5990): [DcSwitchStateMachine-1] DetachingState: enter
12-31 16:37:52.935 D/DcSwitchSM( 5990): [DcSwitchStateMachine-1] DetachingState: EVENT_DATA_DETACHED
12-31 16:37:52.935 D/DcSwitchSM( 5990): [DcSwitchStateMachine-1] IdleState: enter
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6215次
排名:千里之外
原创:22篇
(1)(1)(17)(1)(2)(1)(1)(1)后使用快捷导航没有帐号?
只需一步,快速开始
查看: 1034|回复: 4
在线时间1 小时经验值97 最后登录注册时间帖子阅读权限30UID
初中生, 积分 97, 距离下一级还需 3 积分
该用户从未签到
G币2 最后登录注册时间
马上注册,结交更多机友,下载更多应用,让你轻松玩转手机。
已有帐号?   下载游戏和软件,请【】进入机锋市场!
本人用4g移动卡,请问首选网络详情里,网络ID设什么,是46000,还是46007?
提供的act模式分别是什么意思?GSM ACT,GSM COMPACT ACT,UTRAN ACT,E-UTRAN ACT
应该选择哪种模式?
在首选网络设置后,跟上级菜单的“网络模式”和“首选运营商”有什么关联或逻辑?
本帖子中包含更多资源
才可以下载或查看,没有帐号?
在线时间883 小时经验值2283 最后登录注册时间帖子阅读权限90UID1748842
硕士, 积分 2283, 距离下一级还需 217 积分
TA的每日心情怒 23:45签到天数: 7 天[LV.3]偶尔看看II
G币5 最后登录注册时间
我想很少人去动这个吧,刷机完就自动设置好了
在线时间447 小时经验值810 最后登录注册时间帖子阅读权限70UID4829887
学士, 积分 810, 距离下一级还需 290 积分
TA的每日心情无聊 21:19签到天数: 374 天[LV.9]以坛为家II
G币1424 最后登录注册时间
N9100,刷第三方ROM。。首选网络里一片空白
佛迪斯科教父改价格
在线时间1 小时经验值97 最后登录注册时间帖子阅读权限30UID
初中生, 积分 97, 距离下一级还需 3 积分
该用户从未签到
G币2 最后登录注册时间
qq960 发表于
我想很少人去动这个吧,刷机完就自动设置好了
我机里面是空白的,你们默认是什么?
在线时间883 小时经验值2283 最后登录注册时间帖子阅读权限90UID1748842
硕士, 积分 2283, 距离下一级还需 217 积分
TA的每日心情怒 23:45签到天数: 7 天[LV.3]偶尔看看II
G币5 最后登录注册时间
我里面都是空白的呀,这个不须要设置,上网打电话一切正常
Powered by

我要回帖

更多关于 移动4g网络id怎么设置 的文章

 

随机推荐