package com.jqmobile.core.android.time.impl;
import android.content.Context;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
public class CheckApnType {
/** Called when the activity is first created. */
public static final String CTWAP = "ctwap";
public static final String CMWAP = "cmwap";
public static final String WAP_3G = "3gwap";
public static final String UNIWAP = "uniwap";
public static final int TYPE_NET_WORK_DISABLED = 0;// ���粻����
public static final int TYPE_CM_CU_WAP = 4;// �ƶ���ͨwap10.0.0.172
public static final int TYPE_CT_WAP = 5;// ����wap 10.0.0.200
public static final int TYPE_OTHER_NET = 6;// ����,�ƶ�,��ͨ,wifi ��net����
public static Uri PREFERRED_APN_URI = Uri
.parse("content://telephony/carriers/preferapn");
CheckApnType(){
}
/***
* �ж�Network�������ͣ���ͨ�ƶ�wap������wap������net��
*
* */
public static int checkNetworkType(Context mContext) {
try {
final ConnectivityManager connectivityManager = (ConnectivityManager) mContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo mobNetInfoActivity = connectivityManager
.getActiveNetworkInfo();
if (mobNetInfoActivity == null || !mobNetInfoActivity.isAvailable()) {
// ע��һ��
// NetworkInfo Ϊ�ջ��߲������õ�ʱ�������Ӧ���ǵ�ǰû�п������磬
// ������Щ���Ż������Կ���������
// ���Ե���net���紦����Ȼ�����������硣
// ��Ȼ����socket�в��쳣�����ж����ж����û���ʾ����
Log.i("", "=====================>������");
return TYPE_OTHER_NET;
} else {
// NetworkInfo��Ϊnull��ʼ�ж�����������
int netType = mobNetInfoActivity.getType();
if (netType == ConnectivityManager.TYPE_WIFI) {
// wifi net����
Log.i("", "=====================>wifi����");
return TYPE_OTHER_NET;
} else if (netType == ConnectivityManager.TYPE_MOBILE) {
// ע�����
// �ж��Ƿ����wap:
// ��Ҫͨ��getExtraInfo��ȡ�����������ж����ͣ�
// ��Ϊͨ��Ŀǰ���Ŷ��ֻ��Ͳ��Է��ֽ������ƴ�Ϊ#777����null��
// ���Ż���wap�������Ҫ���ƶ���ͨwap����������һ���û��������,
// ���Կ���ͨ����������жϣ�
final Cursor c = mContext.getContentResolver().query(
PREFERRED_APN_URI, null, null, null, null);
if (c != null) {
c.moveToFirst();
final String user = c.getString(c
.getColumnIndex("user"));
if (!TextUtils.isEmpty(user)) {
Log.i("",
"=====================>���?"
+ c.getString(c
.getColumnIndex("proxy")));
if (user.startsWith(CTWAP)) {
Log.i("", "=====================>����wap����");
return TYPE_CT_WAP;
}
}
}
c.close();
// ע����
// �ж����ƶ���ͨwap:
// ��ʵ����һ�ַ���ͨ��getString(c.getColumnIndex("proxy")��ȡ����ip
// ���жϽ���㣬10.0.0.172�����ƶ���ͨwap��10.0.0.200���ǵ���wap������
// ʵ�ʿ����в��������л������ܻ�ȡ������������Ϣ����������M9 ��2.2����...
// ���Բ���getExtraInfo��ȡ��������ֽ����ж�
String netMode = mobNetInfoActivity.getExtraInfo();
Log.i("", "netMode ================== " + netMode);
if (netMode != null) {
// ͨ��apn����ж��Ƿ�����ͨ���ƶ�wap
netMode = netMode.toLowerCase();
if (netMode.equals(CMWAP) || netMode.equals(WAP_3G)
|| netMode.equals(UNIWAP)) {
Log.i("", "=====================>�ƶ���ͨwap����");
return TYPE_CM_CU_WAP;
}
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
return TYPE_OTHER_NET;
}
return TYPE_OTHER_NET;
}
}