android2.3.5 CDMA/EVDO拨号APN解决方案

fangebushuohua

fangebushuohua

2016-02-19 10:51

今天图老师小编给大家精心推荐个android2.3.5 CDMA/EVDO拨号APN解决方案教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~
google提供的android2.3里面,只能在GSM/WCDMA情况下才能从“设置”-“无线和网络”-“移动网络”-“接入点名称”中选择不同的apn帐号进行拨号连接,而CDMA/EVDO则没有这个功能。最近看了一下代码,简单实现了这个功能。

1、默认的CDMA/EVDO里面连apn列表都不显示,要先把这个挖出来。
修改packages/apps/Phone/res/xml/cdma_options.xml
添加如下内容
代码如下:

PreferenceScreen
android:key="button_apn_key"
android:title="@string/apn_settings"
android:persistent="false"
intent android:action="android.intent.action.MAIN"
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.ApnSettings" /
/PreferenceScreen

还有development/data/etc/apns-conf.xml的version值改为原来的加1,原因代码里面找。
2、修改frameworks/base/telephony/java/com/android/internal/telephony/cdma/cdmadataconnectiontracker.java的setupData函数
代码如下:

private boolean setupData(String reason) {
CdmaDataConnection conn = findFreeDataConnection();
if (conn == null) {
if (DBG) log("setupData: No free CdmaDataConnection found!");
return false;
}
mActiveDataConnection = conn;
String[] types;
if (mRequestedApnType.equals(Phone.APN_TYPE_DUN)) {
types = new String[1];
types[0] = Phone.APN_TYPE_DUN;
} else {
types = mDefaultApnTypes;
}
//mActiveApn = new ApnSetting(0, "", "", "", "", "", "", "", "", "", "",
// 0, types, "IP", "IP");
Uri PREFERRED_APN_URI = Uri.parse("content://telephony/carriers/preferapn");
ContentResolver cResolver = phone.getContext().getContentResolver();
Cursor cr = cResolver.query(PREFERRED_APN_URI, null, null, null, null);
cr.moveToFirst();
String user = cr.getString(cr.getColumnIndex("user"));
String pass = cr.getString(cr.getColumnIndex("password"));
String apn = cr.getString(cr.getColumnIndex("apn"));
Log.e(LOG_TAG, "get apn : apn=" + apn + ", user=" + user + ", password=" + pass);
mActiveApn = new ApnSetting(0, "", "", apn, "", "", "", "", "", user, pass,
, types, "IP", "IP");
Message msg = obtainMessage();
msg.what = EVENT_DATA_SETUP_COMPLETE;
msg.obj = reason;
conn.connect(msg, mActiveApn);
setState(State.INITING);
phone.notifyDataConnection(reason);
return true;
}

3、修改frameworks/base/telephony/java/com/android/internal/telephony/cdma/cdmadataconnection.java的onConnect函数:
代码如下:

phone.mCM.setupDataCall(
Integer.toString(RILConstants.SETUP_DATA_TECH_CDMA),
Integer.toString(dataProfile),
//null, null, null,  //原来传进拨号的参数都是空的!!!
cp.apn.apn, cp.apn.user, cp.apn.password,
Integer.toString(RILConstants.SETUP_DATA_AUTH_PAP_CHAP),
RILConstants.SETUP_DATA_PROTOCOL_IP, msg);

4、修改frameworks/base/telephony/java/com/android/internal/telephony/gsm/ApnSetting.java中对ApnSetting的定义,将其成员类型全部设为public
展开更多 50%)
分享

猜你喜欢

android2.3.5 CDMA/EVDO拨号APN解决方案

编程语言 网络编程
android2.3.5 CDMA/EVDO拨号APN解决方案

android @override 报错解决方案

编程语言 网络编程
android @override 报错解决方案

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在android中ScrollView嵌套ScrollView解决方案

编程语言 网络编程
在android中ScrollView嵌套ScrollView解决方案

android横竖屏切换不重启activity解决方案

编程语言 网络编程
android横竖屏切换不重启activity解决方案

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Android程序退出完美解决方案兼容所有SDK

编程语言 网络编程
Android程序退出完美解决方案兼容所有SDK

Win8.1系统拨号提示651错误临时解决方案

windows系统
Win8.1系统拨号提示651错误临时解决方案

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

java 中的static关键字和final关键字的不同之处

java 中的static关键字和final关键字的不同之处

java实现浮点数转人民币的小例子

java实现浮点数转人民币的小例子
下拉加载更多内容 ↓