[FAQ20244]在apns-conf文件中配置一个read

xiaoxiao2021-02-28  109

[DESCRIPTION]  如果有需要在apns-conf中配置一个新的read_only字段,并使其生效,比如使得APN不可被编辑。可以最如下的修改。       [SOLUTION]  一、使新添加的字段能成功的读取到telephony.db数据库中  1、TelephonyProvider.java文件中的createCarriersTable方法中添加如下代码: 372 EDITED + " INTEGER DEFAULT " + UNEDITED + "," + 373 USER_VISIBLE + " BOOLEAN DEFAULT 1);"; 修改为: 372 EDITED + " INTEGER DEFAULT " + UNEDITED + "," +        READ_ONLY + " BOOLEAN DEFAULT 0," +     //添加这一句 373 USER_VISIBLE + " BOOLEAN DEFAULT 1);"; 2、Telephony.java中添加如下一句: 3558 public static final String USER_VISIBLE = "user_visible";   @hide      //参照USER_VISIBLE ,不能忽略hide public static final String READ_ONLY = "read_only";   //添加这句 3、在TelephonyProvider.java文件中的getRow()方法中添加如下代码 1293 addBoolAttribute(parser, "carrier_enabled", map, CARRIER_ENABLED); 1294 addBoolAttribute(parser, "modem_cognitive", map, MODEM_COGNITIVE); 1295 addBoolAttribute(parser, "user_visible", map, USER_VISIBLE); ++    addBoolAttribute(parser, "read_only", map, READ_ONLY);  //添加这一句 二、从数据库中读取出对应字段,并判断 1、ApnSettings.java中添加如下静态常量 102 private static final int SOURCE_TYPE_INDEX = 6; ++  private static final int READ_ONLY_INDEX = 7; 2、filllist()方法中修改查询条件 361 Cursor cursor = getContentResolver().query( 362 Telephony.Carriers.CONTENT_URI, 363 new String[] { "_id", "name", "apn", "type", "mvno_type", "mvno_match_data", 364 "sourcetype" }, where, null, order); 修改为: Cursor cursor = getContentResolver().query( Telephony.Carriers.CONTENT_URI, new String[] { "_id", "name", "apn", "type", "mvno_type", "mvno_match_data", "sourcetype", "read_only" }, where, null, order); 3、根据数据库中读取的值,修改APN能否被编辑的判断条件 414 /// M: for [Read Only APN] 415 pref.setApnEditable(mApnExt.isAllowEditPresetApn(type, apn, mccmnc, sourcetype)); 修改为: boolean isEdit = mApnExt.isAllowEditPresetApn(type, apn, mccmnc, sourcetype);   //true 表示允许编辑 boolean isReadOnly = cursor.getInt(READ_ONLY_INDEX) < 1;   //true表示允许编辑 pref.setApnEditable(isEdit && isReadOnly);  
转载请注明原文地址: https://www.6miu.com/read-26958.html

最新回复(0)