APN全称是Access Point Name,中文即接入点,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络。
android系统把所有的APN都保存在数据库中,数据库绝对路径:/data/data/com.android.providers.telephony/databases/telephony.db。
使用adb命令可以把该数据库导出查看:
adb pull /data/data/com.android.providers.telephony/databases/telephony.db e:/
获取所有的APN的uri地址为"content://telephony/carriers"。
获取当前使用APN的uri地址为"content://telephony/carriers/preferapn"。
android当前apn保存在一个xml文件里,绝对路径:/data/data/com.android.providers.telephony/shared_prefs/preferred-apn.xml 。
使用命令导出查看:
adb pull /data/data/com.android.providers.telephony/shared_prefs/preferred-apn.xml e:/
内容如下:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <map>
<long name="apn_id" value="2" />
</map>
实例代码:
//获取所有apn Uri uri = Uri.parse("content://telephony/carriers"); Cursor cr = getContentResolver().query(uri, null, null, null, null); //遍历所有apn while(cr!=null && cr.moveToNext()){ // APN id String id = cr.getString(cr.getColumnIndex("_id")); // APN name String apn = cr.getString(cr.getColumnIndex("apn")); 。。。。 } //获取当前apn Uri uri = Uri.parse("content://telephony/carriers/preferapn"); Cursor cr = getContentResolver().query(uri, null, null, null, null); //修改当前apn Uri uri = Uri.parse("content://telephony/carriers/preferapn"); ContentResolver resolver = getContentResolver(); ContentValues values = new ContentValues(); values.put("apn_id", id); resolver.update(uri, values, null, null);
本文转自:http://blog.163.com/yimigao@126/blog/static/6715605020114234013308/