linux设置apn脚本apn,Android学习之网络APN接入点控制
这几天工作中遇到了这样一个问题:应用是一个和平台端系统通过webservice对接的客户端程序,在手机端登录时需要保证网络是电信的C网(CTNET或者CTWAP),这其实就是运营商的网络限制方式,我们的应用不允许你用别的运营商的网络,虽说这种限制未必正确,不过实际中的确会遇到。
好了,对于现在正在用的APN的获取我们可以通过:
Cursor mCursor = this.getContentResolver().query(Uri.parse("content://telephony/carriers/preferapn"), null, null, null, null);
while(mCursor != null && mCursor.moveToNext())
{
String name = mCursor.getString(mCursor.getColumnIndex("name"));
System.out.println("网络连接------------->"+name);
}
然后通过
if(name.contains("中国电信")||name.contains("CT")||name.contains("ct"))
return true;
来判断是否符合我的APN的需要。
这是我之前的想法,事实证明,也许在单模手机上可以正确控制,但是如果在MOTO XT800这类双模手机上就会有问题了,因为当你把网络手动切换到G网时,从数据库中取到的APN名字仍然是之前设置的“中国电信***”之类的接入点,后来发现这种手机在网络设置中的移动网络设置项中有CDMA和GSM两项,也就是说CDMA有CDMA的preferapn,GSM有GSM的preferapn,虽然我手动把网络切换到了G网,但是从数据库中去取apn的时候还是从默认的CDMA项中取的,这样就导致了我无法判断用户是否在用G网登陆我的系统。
使用TelephonyManager也是一样的,无法判断,同样会从CDMA项中去取
// TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
// if(tm.getNetworkType()==TelephonyManager.NETWORK_TYPE_CDMA) {
// System.out.println("---------------------------C网-------------------------");
// }
// System.out.println("----------------------------------->"+tm.getNetworkType());
// if(tm.getPhoneType()==TelephonyManager.PHONE_TYPE_CDMA) {
// System.out.println("---------------------------C-------------------------");
// }
后来查了google的文档,总算找了救星,就是:NetworkInfo
通过NetworkInfo的toString()方法可以查看到当前所用的网络的所有信息,当然这个NetworkInfo对象是通过ConnectivityManager对象的getActiveNetworkInfo()方法得到的,用以获取当前正在使用的NetworkInfo对象,代码如下:
public boolean checkNetWork() {
ConnectivityManager conMan = (ConnectivityManager) this
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo nwi = conMan.getActiveNetworkInfo();
System.out.println("nwi---------------------------->"+nwi);
String extraInfo = nwi.getExtraInfo();
System.out.println("extraInfo---------------------------->"+extraInfo);
if(extraInfo.contains("GSM"))
return false;
if(extraInfo.contains("#777:CDMA")) {
// TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
// if(tm.getNetworkType()==TelephonyManager.NETWORK_TYPE_CDMA) {
// System.out.println("---------------------------C网-------------------------");
// }
// System.out.println("----------------------------------->"+tm.getNetworkType());
// if(tm.getPhoneType()==TelephonyManager.PHONE_TYPE_CDMA) {
// System.out.println("---------------------------C-------------------------");
// }
Cursor mCursor = this.getContentResolver().query(Uri.parse("content://telephony/carriers/preferapn"), null, null, null, null);
while(mCursor != null && mCursor.moveToNext())
{
String name = mCursor.getString(mCursor.getColumnIndex("name"));
System.out.println("网络连接------------->"+name);
if(name.contains("中国电信")||name.contains("CT")||name.contains("ct"))
return true;
}
}
return false;
}
linux设置apn脚本apn,Android学习之网络APN接入点控制相关推荐
- android apn切换工具,Android修改和添加APN网络
由于工作中需要用到网络的判断和APN的切换,研究了一下Android中APN的修改和切换,关于APN的基础知识,这里就不在介绍了,自己百度就行! 直接进入正题: 1.建立一个android工程,需要如 ...
- linux 设置代理_用Android手机做电脑的HTTP代理服务器
在手机端创建一个 HTTP 代理可以让电脑共享手机网络. 手机端 在 Play Store 里选择 Termux 安装. 其它备选 app : GNURoot Debian 等. 打开 Termux ...
- 【linux】shell脚本 ps 命令学习
目录 1. ps 常用的命令 2. ps -ef 命令扩展使用 3. ps 命令的简单应用 Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 window ...
- linux java socket编程_深入学习socket网络编程,以java语言为例
了解java的socket编程与Linux Socket API之间的关系 一.java的网络编程 1.socket原理 socket通信就是通过IP和端口号将两台主机建立连接,提供通信.主机A的应用 ...
- Android学习:访问网络
1.Get请求和Post请求简介 当客户端与服务器建立了网络链接之后,就可以发送Http请求了.Http请求通常分为Get请求和Post请求两种,下面分别介绍: 1.Get请求 Get:通过请求URI ...
- android 电信4gapn,电信apn怎么设置4g最快最稳定的网络?
具体的设置方法如下: 1.首先要明确4G和APN的概念.4G是指第四代移动数字通讯网络系统.APN是一种网络接入技术,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络. 2. ...
- 嵌入式Linux+Android学习路线图
嵌入式Linux+Android学习路线图 2016-08-01 韦东山 百问科技 网站/论坛:www.100ask.net,www.100ask.org 淘 宝:100ask.taobao. ...
- Android 1.5 的APN设定与上网处理
手机上网分为wap和net两种方式,使用net手机就会直接连入互联网,而使用wap则会中间多了一个代理网关,移动联通均是10.0.0.172,端口80.而写与联网有关的代码,wap和net是不一样的: ...
- 嵌入式Linux+Android学习路线图+学习进度
嵌入式Linux+Android学习路线图 转载:http://www.100ask.net/a/howtostudy/ 重拾Linux驱动,就按照百问网的步骤一步一步做,看自己最后能坚持到哪一步!! ...
- Android编译及编译脚本、Android构建基础学习笔记
Android编译及编译脚本.Android构建基础学习笔记 Android编译及编译脚本 概述 Android.mk转换成Android.bp 例子(简单Android.mk文件转Android.b ...
最新文章
- vector、map删除当前记录
- SICP 习题 (2.7) 解题总结 : 定义区间数据结构
- 报文加解密原理_加密系统的组成与过程
- 简明python教程txt-Python:将 list 写入一个 txt 文件四种方法
- UML模型中的图-用例图
- java jinternalframe_JInternalFrame的使用
- sliverlight 开发FAQ
- [c++基本语法]——构造函数初始化列表
- xcode清除最近打开的文件列表
- http:(1):http简介
- mysql修改失败,mysql修改数据失败(是我的代码有问题吗)怎么解决?
- 产品设计:一层分类与多层分类模式的感悟
- 爬虫之Requests库
- vue.js 输入框金额限制
- 黑马程序员2022年最新软件测试学习路线
- 定制10kV变压器感应雷直击雷击变压器加避雷器atp-emtp模型
- 滤波算法(二)—— 中位值滤波算法
- 英特尔的新方向:称王集成计算设备领域
- 路由器的两个端口接在同一个交换机上_2个路由器怎么连接?
- AJAX+php实现分页器:分页展示数据