电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

android APN的打开与关闭VIP免费

android APN的打开与关闭_第1页
1/7
android APN的打开与关闭_第2页
2/7
android APN的打开与关闭_第3页
3/7
androidAPN的打开与关闭由于Android对于APN的网络API没有公开,不过我们可以阅读源代码,然后进行数据库操作,系统会自动监听数据库的变化,从而实现开启或者关闭APN。大家可以研究一下frameworks/base/core/java/android/provider/Telephony.java这个类,比较重要的就是URI和数据库字段:content://telephony/carriers字段可以在Telephony.java中找到。其实原理很简单:1、当开启APN的时候,设置一个正确的移动或者联通的APN2、关闭的时候设置一个错误APN就会自动关闭网络看代码:Activity:Java代码packagecc.mdev.apn;importjava.util.ArrayList;importjava.util.List;importandroid.app.Activity;importandroid.content.ContentValues;importandroid.database.Cursor;importandroid.net.Uri;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;publicclassMainextendsActivity{Uriuri=Uri.parse("content://telephony/carriers");@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Buttonopen=(Button)findViewById(R.id.open);Buttonclose=(Button)findViewById(R.id.close);open.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){openAPN();}});close.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){closeAPN();}});}publicvoidopenAPN(){Listlist=getAPNList();for(APNapn:list){ContentValuescv=newContentValues();cv.put("apn",APNMatchTools.matchAPN(apn.apn));cv.put("type",APNMatchTools.matchAPN(apn.type));getContentResolver().update(uri,cv,"_id=?",newString[]{apn.id});}}publicvoidcloseAPN(){Listlist=getAPNList();for(APNapn:list){ContentValuescv=newContentValues();cv.put("apn",APNMatchTools.matchAPN(apn.apn)+"mdev");cv.put("type",APNMatchTools.matchAPN(apn.type)+"mdev");getContentResolver().update(uri,cv,"_id=?",newString[]{apn.id});}}privateListgetAPNList(){Stringtag="Main.getAPNList()";//current不为空表示可以使用的APNStringprojection[]={"_id,apn,type,current"};Cursorcr=this.getContentResolver().query(uri,projection,null,null,null);Listlist=newArrayList();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")));APNa=newAPN();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();returnlist;}publicstaticclassAPN{Stringid;Stringapn;Stringtype;}}APNMatchTools.javaJava代码packagecc.mdev.apn;publicfinalclassAPNMatchTools{publicstaticclassAPNNet{publicstaticStringCMWAP="cmwap";publicstaticStringCMNET="cmnet";//中国联通3GWAP设置中国联通3G因特网设置中国联通WAP设置中国联通因特网设置//3gwap3gnetuniwapuninetpublicstaticStringGWAP_3="3gwap";publicstaticStringGNET_3="3gnet";publicstaticStringUNIWAP="uniwap";publicstaticStringUNINET="uninet";}publicstaticStringmatchAPN(StringcurrentName){if("".equals(currentName)||null==currentName){return"";}currentName=currentName.toLowerCase();if(currentName.startsWith(APNNet.CMNET))returnAPNNet.CMNET;elseif(currentName.startsWith(APNNet.CMWAP))returnAPNNet.CMWAP;elseif(currentName.startsWith(APNNet.GNET_3))returnAPNNet.GNET_3;elseif(currentName.startsWith(APNNet.GWAP_3))returnAPNNet.GWAP_3;elseif(currentName.startsWith(APNNet.UNINET))returnAPNNet.UNINET;elseif(currentName.startsWith(APNNet.UNIWAP))returnAPNNet.UNIWAP;elseif(currentName.startsWith("default"))return"default";elsereturn"";//returncurrentName.substring(0,currentName.length()-SUFFIX.length());}}最后不要忘记加上修改APN的权限:Xml代码1.经过测试在G1上联通和移动卡均是成功的。

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

android APN的打开与关闭

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部