- 浏览: 403281 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ysn003:
这样用就好啦!!!<Button ...
Android学习 之 ColorStateList按钮文字变色 -
ysn003:
Android学习 之 ColorStateList按钮文字变色 -
vitoliao:
楼主你好,如果你的代码需要实现的是回显功能,需要在MainCl ...
Java学习 之 Socket(实现简易的C/S聊天室) -
xinqiqi123:
在item布局中要是引用到自定的东西,item就会显示不全
Android学习 之 问题&解答 ScrollView中嵌套ListView时显示不全的简便解决方案 -
CTXsamCTX:
很好,学习了。
Android 图形用户界面 之 绘图(一)
直接进入主题... ...
package com.android.set.net.apn;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.net.Uri;
import android.util.Log;
public class ChangeCurrentAPN {
public static final Uri APN_TABLE_URI = Uri.parse("content://telephony/carriers");//所有的APN配配置信息位置
public static final Uri PREFERRED_APN_URI = Uri.parse("content://telephony/carriers/preferapn");//当前的APN配置信息位置
public static final String TAG = "ouyangpin";
// int apnId;
Cursor cursor_current;
Cursor cursor_need;
Context context;
public HttpReqConnect http;
int newCreateAPNSet_Id;
public ChangeCurrentAPN(Context context, HttpReqConnect http) {
this.context = context;
this.http = http;
boolean isCmwap = getDefaultAPN();
if (!isCmwap) {//当前的接入点不是cmwap接入点
if (!checkWapAPN()) {//检查当前所有接入点中是否存在cmwap接入点,如果不存在任何cmwap接入点,则创建一个新的
// 创建一个新的cmwap接入点并返回该新创建的接入点的id值
newCreateAPNSet_Id = addCmwapAPN();
Log.d("chenjianli", "info: newCreateAPNSet_Id is " + newCreateAPNSet_Id);
boolean fResult = SetDefaultAPN(newCreateAPNSet_Id);//设置该新创建的接入点为当前接入点
Log.d("chenjianli", "info: fResult = " + fResult);//立刻查询fResult的值为false还是true来判断当前接入点是否改变是没有意义的,因为手机改变当前接入点需要一段时间
Log.d("chenjianli", "info: current apn set is cmnet,and not have cmwap APN,we create new cmwap APN and then set it to mobile.");
} else {
//从所有满足条件的接入点中选择合适的接入点并设置
for(int i = 0;i != cmwapArrayList.size();i++) {
String type = cmwapArrayList.get(i).get("type");
String proxy = cmwapArrayList.get(i).get("proxy");
String port = cmwapArrayList.get(i).get("port");
if ( !type.equals("mms")
&&(proxy.equals("10.0.0.172")||proxy.equals("010.000.000.172"))
&&port.equals("80"))
{
String id = cmwapArrayList.get(i).get("_id");
SetDefaultAPN(Integer.parseInt(id));
Log.d("chenjianli", "info: current apn set is cmwap,and have cmwap set that we need,do not need to create new cmwap APN,just changed .");
return;
}
}
}
try {
Thread.sleep(10000);//因为系统更改APN设置需要一定的时间,但是目前我还不清楚当系统的APN被改变之后系统给出什么提示(到底是发广播还是什么,目前只知道会在通知栏通知一下),所以我这里暂时的让它睡眠10秒,让系统有足够的时间去更改APN,之后我们再去进行联网的操作。
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {//当前的接入点已经是cmwap接入点
//什么都不做!
Log.d("chenjianli", "info: current apn set is cmnet,do not need to change .");
}
}
String mobileInitalAPNSet_Id;
// 获取当前apn属性
private boolean getDefaultAPN() {
cursor_current = context.getContentResolver().query(PREFERRED_APN_URI,null, null, null, null);
if (cursor_current.moveToFirst()) {
String proxy = cursor_current.getString(cursor_current.getColumnIndex("proxy"));
String apn = cursor_current.getString(cursor_current.getColumnIndex("apn"));
String port = cursor_current.getString(cursor_current.getColumnIndex("port"));
String current = cursor_current.getString(cursor_current.getColumnIndex("current"));
if (proxy.equals("10.0.0.172")|| proxy.equals("010.000.000.172")&&port.equals("80")&&apn.equals("cmwap")&¤t.equals("1")) {
mobileInitalAPNSet_Id = cursor_current.getString(cursor_current.getColumnIndex("_id"));
return true;
}
}
return false;
}
public boolean SetDefaultAPN(int id) {
boolean res = false;
ContentResolver resolver = context.getContentResolver();
ContentValues values = new ContentValues();
values.put("apn_id", id);
try {
resolver.update(PREFERRED_APN_URI, values, null, null);
Cursor c = resolver.query(PREFERRED_APN_URI, new String[] { "name","apn" }, "_id=" + id, null, null);
if (c != null) {
res = true;
c.close();
}
} catch (SQLException e) {
Log.d(TAG, "-----" + e.getMessage());
}
return res;
}
private ArrayList<HashMap<String, String>> cmwapArrayList = new ArrayList<HashMap<String, String>>();
// 检测是否存在cmwap接入点
private boolean checkWapAPN() {
Cursor cursor_need = context.getContentResolver().query(APN_TABLE_URI,null, "apn = \'cmwap\' and current = 1", null, null);
if (cursor_need != null) {
while(cursor_need.moveToNext()){
HashMap<String, String> map = new HashMap<String, String>();
map.put("type", cursor_need.getString(cursor_need.getColumnIndex("type")));
map.put("_id", cursor_need.getString(cursor_need.getColumnIndex("_id")));
map.put("proxy", cursor_need.getString(cursor_need.getColumnIndex("proxy")));
map.put("port", cursor_need.getString(cursor_need.getColumnIndex("port")));
cmwapArrayList.add(map);
}
return true;//表示存在cmwap接入点
} else {
return false;//表示不存在cmwap接入点
}
}
private int addCmwapAPN() {
ContentResolver cr = context.getContentResolver();
ContentValues cv = new ContentValues();
cv.put("name", "mycmwap");
cv.put("apn", "cmwap");
cv.put("numeric", "46000");
cv.put("mcc", "460");
cv.put("mnc", "00");
cv.put("proxy", "10.0.0.172");
cv.put("port", "80");
cv.put("mmsc", "http://moternet.com.cn/");
cv.put("current", 1);
Cursor c = null;
try {
Uri newRow = cr.insert(APN_TABLE_URI, cv);
if (newRow != null) {
c = cr.query(newRow, null, null, null, null);
c.moveToFirst();
String id = c.getString(c.getColumnIndex("_id"));
return Integer.parseInt(id);//返回新创建的cmwap接入点的id
}
} catch (SQLException e) {
Log.d(TAG, e.getMessage());
}
if (c != null)
c.close();
return 0;
}
}
这里在放一个查看当前手机接入点的所有信息,大家可以做个打印:
String[] names = cursor_current.getColumnNames();
if (names != null) {
sb.append("当前接入点配置信息:");
for (int i = 0; i < names.length; ++i) {
String value = cursor_current.getString(cursor_current.getColumnIndex(names[i]));
sb.append(names[i]+" = "+value+"\n");
}
}
另外很重要的一点就是要配置好权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
发表评论
-
Android 学习 之 使用ActivityGroup调用对应Activity的菜单
2011-12-23 17:34 2593代码很简单,直接贴在这里了。 在使用ActivityGrou ... -
Android 学习 之 TextView结合SpannableString
2011-12-22 12:02 5427protected void onCreate(Bundle ... -
Android 学习 之 图形绘制篇 获取要绘制的文字的宽度/长度
2011-11-29 15:43 7381转自:http://www.cnblogs.com/Tiger ... -
Android 学习 之 键盘问题
2011-10-12 12:00 45111.隐藏键盘 一般情况下,都是在点击某个View的时候 ... -
Android 学习 之 SD卡相关
2011-08-19 15:42 13001.获取SD的路径字符串 public static Str ... -
Android 学习 之 关于应用程序的自适应问题(一)
2011-08-16 12:18 1609转自:http://venus-chen.iteye.com/ ... -
Android 学习 之 资源文件 布局中ID的引用
2011-08-16 11:30 5977转自:http://tiantian0521.blog.163 ... -
Android 学习 之 关闭应用程序的方法
2011-08-10 11:46 1401package com.close; import jav ... -
Android 学习 之 资源文件 动态修改strings.xml中的字符资源
2011-08-10 11:25 6490转自:http://www.cnblogs.com/cools ... -
Android 学习 之 Intent 调用大全
2011-08-10 11:21 1019从别人那里抠的,代码有点乱,仅供自己参考,需要的自己整理下吧, ... -
Android学习 之 动态切换全屏和非全屏模式
2011-06-02 10:03 4403直接贴出代码: package com.screen; ... -
Android学习 之 常见知识点记录
2011-06-01 20:35 1850也是转的,呜呜,人家写的好好,有记录的习惯,值得学习,转载请说 ... -
Android学习 之 获取可视区域的Rect对象(顺带获取状态栏和标题栏高度的方法)
2011-06-01 11:31 10864这个有什么用捏,这 ... -
Android 基本控件 之 Dialog(二)Dialog主题的Activity
2011-06-01 10:10 2687转自:http://www.cnblogs.com/xi ... -
Android 基本控件 之 SeekBar(一) 个性你的视图
2011-05-31 16:34 12138系统自带的SeekBar组件 ... -
Android 系统设置 之 保持手机屏幕常亮的方法
2011-05-25 18:13 9781方法一: 在Activity的onCreate()中: ... -
Android 图形用户界面 之 绘图(二) Paint类 主要方法介绍
2011-05-25 18:09 9254摘自《Ophone应用开发权威指南》: /** * P ... -
Android 图形用户界面 之 绘图(一)
2011-05-25 17:59 30665直接贴上代码: BasicViewDraw.java ... -
【转】Android 画图 之 Matrix(三)
2011-05-24 19:04 1641原文地址:http://developer.51cto.com ... -
【转】Android 画图 之 Matrix(二)
2011-05-24 18:51 1397原文地址:http://chroya.iteye.com/ ...
相关推荐
4. **切换APN**:在Android应用中,如果需要在`cmnet`和`cmwap`之间切换,可以通过修改当前激活的APN实现。`cmnet`通常用于高速互联网访问,而`cmwap`通常用于WAP浏览,它们的APN设置是不同的。通过调用`...
标题提到的"AndroidWIFI,CMWAP,CMNET的自动判断访问"是指在Android设备上如何根据不同的网络连接方式(如Wi-Fi、CMWAP和CMNET)来适配网络请求。在描述中提到了在开发过程中遇到的问题,即HTTP服务在某些网络环境下...
CMWAP是GPRS(General Packet Radio Service)网络下的一种接入点名称(Access Point Name,简称APN),它是中国移动为用户提供的一种低带宽、低成本的互联网访问服务。相比于CMNET,CMWAP通常用于浏览网页、收发...
为了在Android设备上使用这些服务,用户需要正确设置接入点名称(Access Point Names, APN)。以下是详细步骤和注意事项: 1. **CMNET连接设置** - CMNET主要用于提供全互联网访问,设置如下: - 名称:自定义,...
Android 手机设置CMWAP 接入点 设置--- 无限控件---移动网络设置---接入点名称----再按菜单---选择新apn 步,设置CMNET 上网APN 新建 APN 1.名称:cmnet 2.APN:cmnet 3.APN 类型:default 就只...
Android操作系统是全球最受欢迎的智能手机平台之一,对于新手来说,了解其基本操作至关重要。本文将详细讲解Android手机的一些基础使用技巧,包括安装和卸载软件、桌面管理、联系人操作、蓝牙和无线网络设置以及APN...
Android 手机设置CMWAP 接入点 设置--- 无限控件---移动网络设置---接入点名称----再按菜单---选择新apn 第一步,设置CMNET 上网APN 新建 APN 1.名称:cmnet 2.APN:cmnet 3.APN 类型:default ...
中国移动共有三种不同的接入方式,分别是“中国移动CMNET设置”、“中国移动CMWAP设置”和“中国移动彩信设置”。以中国移动CMNET设置为例,我们可以按照以下参数设定: 名称:中国移动NET设置; APN(或者接入点...
- 若使用飞信,还需设置一个用于WAP上网的cmwap APN。 以上内容详细阐述了彩信的使用流程、特点、业务规则,以及Android手机进行彩信和网络设置的方法,涵盖了从创建到接收、存储、网络配置的全过程。这些知识对于...
例如,中国移动的APN可能是“cmnet”或“cmwap”。设置完成后,还需要输入相应的用户名和密码,但并非所有运营商都需要这些信息。 4. **选择网络模式**:根据运营商的网络覆盖情况,用户可能需要在2G、3G或自动模式...
- 创建另一个APN,如“中国移动 WAP 设置”,APN设为“cmwap”,端口设为805,用于节省流量的WAP上网。 - 创建专用的“中国移动彩信设置”APN,APN同样为“cmwap”,MMS端口设为80,确保APN类型为“mms”。 2. ...
手机上网接入点设置是一个重要的操作过程,它决定了手机如何通过移动网络连接到互联网。随着智能手机的普及和移动网络技术的发展,不同运营商提供的接入点设置各具特色。本篇文章将详细介绍主流手机上网接入点的设置...
APN是用户通过手机接入网络时必须配置的参数,它定义了手机通过何种方式访问网络,通常分为CMWAP(主要用于WAP浏览)和CMNET(用于普通互联网访问)两类。 在编写需要网络连接的应用程序时,例如发送电子邮件的应用...
Android系统作为全球最广泛使用的移动操作系统之一,拥有众多实用的技巧,可以帮助用户更好地管理和优化他们的设备。以下是一些基础和进阶的使用技巧,旨在帮助新手快速掌握Android手机的使用: 1. **安装与卸载...
需要注意的是,选择不同的APN会影响数据使用,如选择CMWAP可能无法访问所有互联网内容,而CMNET则通常提供更全面的网络访问。此外,有些应用如飞信、QQ等可能需要特定的APN设置才能正常使用。 总结来说,了解并正确...
- 蓝牙和APN设置:用于设备间的数据交换和网络接入点配置。 - 短信和来电铃声设置:个性化短信模板和来电铃声,提升用户体验。 - 系统垃圾清理:定期清理缓存和不必要的文件,优化手机性能。 - 屏幕截图:使用特定...
- cmwap:通常用于WAP浏览,可能需要经过移动的代理服务器,速度较慢。 2. 3G网络: - 3G网络包括联通的WCDMA和电信的CDMA2000。它们提供了比2G更快的数据传输速度: - 联通3G: - 3gnet:提供高速无限制的...
例如,对于中国移动,通常有两个主要的APN类型:cmnet用于普通上网,cmwap则通常用于WAP浏览和彩信服务。配置时,需要填写正确的APN名称、代理、端口等信息,以确保网络功能的正常运行。如果遇到网络问题,可以尝试...