2022年Android的APN设定与上网处理 .pdf

上传人:Che****ry 文档编号:34878955 上传时间:2022-08-19 格式:PDF 页数:3 大小:48.72KB
返回 下载 相关 举报
2022年Android的APN设定与上网处理 .pdf_第1页
第1页 / 共3页
2022年Android的APN设定与上网处理 .pdf_第2页
第2页 / 共3页
点击查看更多>>
资源描述

《2022年Android的APN设定与上网处理 .pdf》由会员分享,可在线阅读,更多相关《2022年Android的APN设定与上网处理 .pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Android 的 APN设定与上网处理手机上网分为 wap和 net 两种方式,使用 net 手机就会直接连入互联网, 而使用wap则会中间多了一个代理网关,移动联通均是10.0.0.172 ,端口80。而写与联网有关的代码, wap和 net 是不一样的: wap一般是这样:URL url = new URL(http:/10.0.0.172:80/index.htm); HttpURLConnection hc = (HttpURLConnection) url.openConnection(); hc.setRequestProperty(X-Online-Host, ); net一般

2、是这样:URL url = new URL(http:/ HttpURLConnection hc = (HttpURLConnection) url.openConnection(); 因此,编写程序时就要检测当前的APN 类型,判断是 wap还是 net 方式,有时候可能还要修改当前的APN ,都是要解决的问题。检查当前 APN :获取所有的 APN ,方法是通过 ContentResolver ,uri 地址为content:/telephony/carriers。代码如下:Uri uri = Uri.parse(content:/telephony/carriers); Cursor

3、cr = getContentResolver().query(uri, null, null, null, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - null); while(cr!=null & cr.moveToNext() / APN id String id = cr.getString(cr.getColumnIndex(_id); / APN name String apn = cr.getString(cr

4、.getColumnIndex(apn); / do other things. 里面的 _id 和 apn 是什么?这个是系统存储apn 的数据库中的字段。 系统把所有的 apn 都保存在数据库中,数据库在:/data/data /com.android.providers.telephony/databases/telephony.db。把你的 G3 连上电脑,使用 adb 命 令: adb pull /data/data/com.android.providers.telephony/databases/telephony.db f:/ 把它弄出来看看。(同目录下还有个mmssms.db

5、 ,是存储短信的数据库)里面有 200多个 apn,只有 current为1的才会在手机的 apn 设置里面显示出来。数据库的各个字段对应了系统设置里面的各项。上面代码里面cr.getString(cr.getColumnIndex(_id)就是取一个 apn 的_id 了,同理可以取出其他需要的字段。但是我们这些还没什么用,我们要的是当前所用的apn。获取当前所使用的apn 的 uri 地址为:content:/telephony/carriers/preferapn。代码同上,替换 uri后再 取,发现取出来的只有一个,这个就是当前所使用的apn了,就是系统设置里面apn列表中后面那个小圆

6、圈被选中的那个apn。这个 apn 系统保存在一个 xml 文件里,地址为:/data/data/com.android.providers.telephony/shared_prefs/preferred-apn.xml 。同样可以取出这个文件打开看看,里面内容很简单: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - 就是说当前 apn 设定为数据库中 _id 为218的那个 apn了。要判断这个 apn 是 wap还是 ne

7、t ,最好是看 proxy 是不是 10.0.0.172 ,因为apn 字段是可以任意修改的,有可能用户把apn字段随便填写。对了,关于 apn 的操作相关代码在android 源代码的packages/providers/TelephonyProvider/src/com /android/providers/telephony/TelephonyProvider.java中,有兴趣可以看看。修改当前 APN :接着就是修改它了。 为什么要修改?有可能用户的卡只能wap上网,但是他却设定了 net 。程序中检测到net 但无法联网,就把系统设置改为wap再试试。Uri uri = Uri.p

8、arse(content:/telephony/carriers/preferapn); ContentResolver resolver = getContentResolver(); ContentValues values = new ContentValues(); values.put(apn_id, id); resolver.update(uri, values, null, null); 这里面的 id 就是对应数据库里面的 _id 字段了。至于如何取到net 的 APN ,我看获取所有的 APN 里面 current为1的然后自己判断了,要不自己新建一个apn也行。至于哪些 apn 的 current为1, 应该是系统判断国家码和网络码, 也就是 MCC和 MNC ,和当前网络符合的才让它显示出来。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁