资源描述:
《android APN的打开与关闭》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、androidAPN的打开与关闭由于Android对于APN的网络API没有公开,不过我们可以阅读源代码,然后进行数据库操作,系统会自动监听数据库的变化,从而实现开启或者关闭APN。大家可以研究一下frameworks/base/core/java/android/provider/Telephony.java这个类,比较重要的就是URI和数据库字段:content://telephony/carriers字段可以在Telephony.java中找到。其实原理很简单:1、当开启APN的时候,设置一个正确的移动或者联通的APN2、关闭的时候设置
2、一个错误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;importandroi
3、d.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.i
4、d.open);Buttonclose=(Button)findViewById(R.id.close);open.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){openAPN();}});close.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){closeAPN();}});}public voidopenAPN(){L
5、istlist=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=g
6、etAPNList();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(){Stringt
7、ag="Main.getAPNList()";//current不为空表示可以使用的APNString projection[]={"_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
8、"))+" "+cr.getString(cr.getColumnIndex("apn"))+" "+cr.getString(cr.getColumnIndex(