0
点赞
收藏
分享

微信扫一扫

Android FDN开启后手机仍然能够上网


若需要在FDN开启的情况下禁止手机上网功能,需要有L4 license,可见L4 code;
 
1、modem 中需要修改如下:
修改modem source code modem\l4\l4c\src\common\l4c_utility.c 文件中的l4_custom_approval_type()函数返回值。
保整返回值为 return APPROVAL_TYPE_FULL;
 
2、4G 项目还需要在AP端修改两处:
1>. /alps/frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DcTracker.java 文件内


private void onFdnChanged() {

if (mGsmDCTExt.isFdnEnableSupport()) {

log("onFdnChanged");

if (getFdnStatus()) {

if(hasSpecialNumber())

{

log("fdn enalbed and hasSpecialNumber setupDataOnConnectableApns!");

setupDataOnConnectableApns(Phone.REASON_FDN_DISABLED);

}

else{

log("fdn enabled and do not hasSpecialNumber , cleanUpAllConnections!");

cleanUpAllConnections(true, Phone.REASON_FDN_ENABLED);

}

} else {

log("fdn disabled, setupDataOnConnectableApns!");

setupDataOnConnectableApns(Phone.REASON_FDN_DISABLED);

}

} else {

log("not support fdn enabled, skip onFdnChanged");

}

}




And here is sample code for you to implement how to judge there exist a *99# in FDN list, you can refer to that.


ContentResolver resolver = getContentResolver();
Cursor cursor = null;


private static final String[] COLUMN_NAMES = new String[] {

"index"/*blog.csdn.net/sergeycao*/,

"name",

"number"

};



private Uri getUri(int simId){

if (FeatureOption.MTK_GEMINI_SUPPORT){

if(simId == 0){

return Uri.parse("content://icc/fdn1");

}else if(simId == 1){

return Uri.parse("content://icc/fdn2");

}else{

return Uri.parse("content://icc/fdn");

}

}else{

return Uri.parse("content://icc/fdn");

}

}




public Boolean hasSpecialNumber(int simId){



Boolean hasNumber = false;

try {

cursor = resolver.query(getUri(simId), COLUMN_NAMES, null, null, null);

if (cursor != null){

cursor.moveToFirst();

do {

number = cursor.getString(2);

if(number.equals("*99#"){

hasNumber = true;

}

} while (cursor.moveToNext());

}



} catch (Exception e) {

Log.w(TAG, "Exception thrown during hasSpecialNumber", e);

} finally{

if (cursor != null){

cursor.close();

}

}



return hasNumber;

}


 
2>. 

public boolean isFdnEnableSupport() {

// Default is return false, set to true if needed

return true;

}

举报

相关推荐

0 条评论