merge in nyc-release history after reset to nyc-dev
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index 0de0e79..808a660 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -35,9 +35,9 @@
import android.net.Uri;
import android.os.Binder;
import android.os.Environment;
+import android.os.FileUtils;
import android.os.SystemProperties;
import android.os.UserHandle;
-import android.provider.Telephony;
import android.telephony.ServiceState;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
@@ -55,12 +55,13 @@
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
-import java.lang.NumberFormatException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import static android.provider.Telephony.Carriers.*;
+
public class TelephonyProvider extends ContentProvider
{
private static final String DATABASE_NAME = "telephony.db";
@@ -89,7 +90,7 @@
private static final String CARRIERS_TABLE_TMP = "carriers_tmp";
private static final String SIMINFO_TABLE = "siminfo";
- private static final String PREF_FILE = "preferred-apn";
+ private static final String PREF_FILE_APN = "preferred-apn";
private static final String COLUMN_APN_ID = "apn_id";
private static final String PREF_FILE_FULL_APN = "preferred-full-apn";
@@ -98,6 +99,9 @@
private static final String BUILD_ID_FILE = "build-id";
private static final String RO_BUILD_ID = "ro_build_id";
+ private static final String PREF_FILE = "telephonyprovider";
+ private static final String APN_CONF_CHECKSUM = "apn_conf_checksum";
+
private static final String PARTNER_APNS_PATH = "etc/apns-conf.xml";
private static final String OEM_APNS_PATH = "telephony/apns-conf.xml";
private static final String OTA_UPDATED_APNS_PATH = "misc/apns-conf.xml";
@@ -108,27 +112,44 @@
private static final ContentValues s_currentNullMap;
private static final ContentValues s_currentSetMap;
+ private static final String IS_UNEDITED = EDITED + "=" + UNEDITED;
+ private static final String IS_EDITED = EDITED + "!=" + UNEDITED;
+ private static final String IS_USER_EDITED = EDITED + "=" + USER_EDITED;
+ private static final String IS_USER_DELETED = EDITED + "=" + USER_DELETED;
+ private static final String IS_NOT_USER_DELETED = EDITED + "!=" + USER_DELETED;
+ private static final String IS_USER_DELETED_BUT_PRESENT_IN_XML =
+ EDITED + "=" + USER_DELETED_BUT_PRESENT_IN_XML;
+ private static final String IS_NOT_USER_DELETED_BUT_PRESENT_IN_XML =
+ EDITED + "!=" + USER_DELETED_BUT_PRESENT_IN_XML;
+ private static final String IS_CARRIER_EDITED = EDITED + "=" + CARRIER_EDITED;
+ private static final String IS_CARRIER_DELETED = EDITED + "=" + CARRIER_DELETED;
+ private static final String IS_NOT_CARRIER_DELETED = EDITED + "!=" + CARRIER_DELETED;
+ private static final String IS_CARRIER_DELETED_BUT_PRESENT_IN_XML =
+ EDITED + "=" + CARRIER_DELETED_BUT_PRESENT_IN_XML;
+ private static final String IS_NOT_CARRIER_DELETED_BUT_PRESENT_IN_XML =
+ EDITED + "!=" + CARRIER_DELETED_BUT_PRESENT_IN_XML;
+
private static final int INVALID_APN_ID = -1;
private static final List<String> CARRIERS_UNIQUE_FIELDS = new ArrayList<String>();
static {
// Columns not included in UNIQUE constraint: name, current, edited, user, server, password,
- // authtype, type, protocol, roaming_protocol, sub_id, modem_cognitive, max_conns, wait_time,
- // max_conns_time, mtu, bearer_bitmask, user_visible
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.NUMERIC);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.MCC);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.MNC);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.APN);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.PROXY);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.PORT);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.MMSPROXY);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.MMSPORT);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.MMSC);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.CARRIER_ENABLED);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.BEARER);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.MVNO_TYPE);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.MVNO_MATCH_DATA);
- CARRIERS_UNIQUE_FIELDS.add(Telephony.Carriers.PROFILE_ID);
+ // authtype, type, protocol, roaming_protocol, sub_id, modem_cognitive, max_conns,
+ // wait_time, max_conns_time, mtu, bearer_bitmask, user_visible
+ CARRIERS_UNIQUE_FIELDS.add(NUMERIC);
+ CARRIERS_UNIQUE_FIELDS.add(MCC);
+ CARRIERS_UNIQUE_FIELDS.add(MNC);
+ CARRIERS_UNIQUE_FIELDS.add(APN);
+ CARRIERS_UNIQUE_FIELDS.add(PROXY);
+ CARRIERS_UNIQUE_FIELDS.add(PORT);
+ CARRIERS_UNIQUE_FIELDS.add(MMSPROXY);
+ CARRIERS_UNIQUE_FIELDS.add(MMSPORT);
+ CARRIERS_UNIQUE_FIELDS.add(MMSC);
+ CARRIERS_UNIQUE_FIELDS.add(CARRIER_ENABLED);
+ CARRIERS_UNIQUE_FIELDS.add(BEARER);
+ CARRIERS_UNIQUE_FIELDS.add(MVNO_TYPE);
+ CARRIERS_UNIQUE_FIELDS.add(MVNO_MATCH_DATA);
+ CARRIERS_UNIQUE_FIELDS.add(PROFILE_ID);
}
static {
@@ -151,10 +172,10 @@
s_urlMatcher.addURI("telephony", "carriers/update_db", URL_UPDATE_DB);
s_currentNullMap = new ContentValues(1);
- s_currentNullMap.put(Telephony.Carriers.CURRENT, "0");
+ s_currentNullMap.put(CURRENT, "0");
s_currentSetMap = new ContentValues(1);
- s_currentSetMap.put(Telephony.Carriers.CURRENT, "1");
+ s_currentSetMap.put(CURRENT, "1");
}
private static class DatabaseHelper extends SQLiteOpenHelper {
@@ -261,49 +282,103 @@
if (DBG) log("dbh.createCarriersTable: " + tableName);
db.execSQL("CREATE TABLE " + tableName +
"(_id INTEGER PRIMARY KEY," +
- "name TEXT DEFAULT ''," +
- "numeric TEXT DEFAULT ''," +
- "mcc TEXT DEFAULT ''," +
- "mnc TEXT DEFAULT ''," +
- "apn TEXT DEFAULT ''," +
- "user TEXT DEFAULT ''," +
- "server TEXT DEFAULT ''," +
- "password TEXT DEFAULT ''," +
- "proxy TEXT DEFAULT ''," +
- "port TEXT DEFAULT ''," +
- "mmsproxy TEXT DEFAULT ''," +
- "mmsport TEXT DEFAULT ''," +
- "mmsc TEXT DEFAULT ''," +
- "authtype INTEGER DEFAULT -1," +
- "type TEXT DEFAULT ''," +
- "current INTEGER," +
- "protocol TEXT DEFAULT 'IP'," +
- "roaming_protocol TEXT DEFAULT 'IP'," +
- "carrier_enabled BOOLEAN DEFAULT 1," +
- "bearer INTEGER DEFAULT 0," +
- "bearer_bitmask INTEGER DEFAULT 0," +
- "mvno_type TEXT DEFAULT ''," +
- "mvno_match_data TEXT DEFAULT ''," +
- "sub_id INTEGER DEFAULT " + SubscriptionManager.INVALID_SUBSCRIPTION_ID + "," +
- "profile_id INTEGER DEFAULT 0," +
- "modem_cognitive BOOLEAN DEFAULT 0," +
- "max_conns INTEGER DEFAULT 0," +
- "wait_time INTEGER DEFAULT 0," +
- "max_conns_time INTEGER DEFAULT 0," +
- "mtu INTEGER DEFAULT 0," +
- "edited INTEGER DEFAULT " + Telephony.Carriers.UNEDITED + "," +
- "user_visible BOOLEAN DEFAULT 1," +
+ NAME + " TEXT DEFAULT ''," +
+ NUMERIC + " TEXT DEFAULT ''," +
+ MCC + " TEXT DEFAULT ''," +
+ MNC + " TEXT DEFAULT ''," +
+ APN + " TEXT DEFAULT ''," +
+ USER + " TEXT DEFAULT ''," +
+ SERVER + " TEXT DEFAULT ''," +
+ PASSWORD + " TEXT DEFAULT ''," +
+ PROXY + " TEXT DEFAULT ''," +
+ PORT + " TEXT DEFAULT ''," +
+ MMSPROXY + " TEXT DEFAULT ''," +
+ MMSPORT + " TEXT DEFAULT ''," +
+ MMSC + " TEXT DEFAULT ''," +
+ AUTH_TYPE + " INTEGER DEFAULT -1," +
+ TYPE + " TEXT DEFAULT ''," +
+ CURRENT + " INTEGER," +
+ PROTOCOL + " TEXT DEFAULT 'IP'," +
+ ROAMING_PROTOCOL + " TEXT DEFAULT 'IP'," +
+ CARRIER_ENABLED + " BOOLEAN DEFAULT 1," +
+ BEARER + " INTEGER DEFAULT 0," +
+ BEARER_BITMASK + " INTEGER DEFAULT 0," +
+ MVNO_TYPE + " TEXT DEFAULT ''," +
+ MVNO_MATCH_DATA + " TEXT DEFAULT ''," +
+ SUBSCRIPTION_ID + " INTEGER DEFAULT "
+ + SubscriptionManager.INVALID_SUBSCRIPTION_ID + "," +
+ PROFILE_ID + " INTEGER DEFAULT 0," +
+ MODEM_COGNITIVE + " BOOLEAN DEFAULT 0," +
+ MAX_CONNS + " INTEGER DEFAULT 0," +
+ WAIT_TIME + " INTEGER DEFAULT 0," +
+ MAX_CONNS_TIME + " INTEGER DEFAULT 0," +
+ MTU + " INTEGER DEFAULT 0," +
+ EDITED + " INTEGER DEFAULT " + UNEDITED + "," +
+ USER_VISIBLE + " BOOLEAN DEFAULT 1," +
// Uniqueness collisions are used to trigger merge code so if a field is listed
// here it means we will accept both (user edited + new apn_conf definition)
// Columns not included in UNIQUE constraint: name, current, edited,
// user, server, password, authtype, type, protocol, roaming_protocol, sub_id,
// modem_cognitive, max_conns, wait_time, max_conns_time, mtu, bearer_bitmask,
// user_visible
- "UNIQUE (numeric, mcc, mnc, apn, proxy, port, mmsproxy, mmsport, mmsc," +
- "carrier_enabled, bearer, mvno_type, mvno_match_data, profile_id));");
+ "UNIQUE (" + TextUtils.join(", ", CARRIERS_UNIQUE_FIELDS) + "));");
if (DBG) log("dbh.createCarriersTable:-");
}
+ private long getChecksum(File file) {
+ long checksum = -1;
+ try {
+ checksum = FileUtils.checksumCrc32(file);
+ if (DBG) log("Checksum for " + file.getAbsolutePath() + " is " + checksum);
+ } catch (FileNotFoundException e) {
+ loge("FileNotFoundException for " + file.getAbsolutePath() + ":" + e);
+ } catch (IOException e) {
+ loge("IOException for " + file.getAbsolutePath() + ":" + e);
+ }
+ return checksum;
+ }
+
+ private long getApnConfChecksum() {
+ SharedPreferences sp = mContext.getSharedPreferences(PREF_FILE, Context.MODE_PRIVATE);
+ return sp.getLong(APN_CONF_CHECKSUM, -1);
+ }
+
+ private void setApnConfChecksum(long checksum) {
+ SharedPreferences sp = mContext.getSharedPreferences(PREF_FILE, Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = sp.edit();
+ editor.putLong(APN_CONF_CHECKSUM, checksum);
+ editor.apply();
+ }
+
+ private File getApnConfFile() {
+ // Environment.getRootDirectory() is a fancy way of saying ANDROID_ROOT or "/system".
+ File confFile = new File(Environment.getRootDirectory(), PARTNER_APNS_PATH);
+ File oemConfFile = new File(Environment.getOemDirectory(), OEM_APNS_PATH);
+ File updatedConfFile = new File(Environment.getDataDirectory(), OTA_UPDATED_APNS_PATH);
+ confFile = getNewerFile(confFile, oemConfFile);
+ confFile = getNewerFile(confFile, updatedConfFile);
+ return confFile;
+ }
+
+ /**
+ * This function computes checksum for the file to be read and compares it against the
+ * last read file. DB needs to be updated only if checksum has changed, or old checksum does
+ * not exist.
+ * @return true if DB should be updated with new conf file, false otherwise
+ */
+ private boolean apnDbUpdateNeeded() {
+ File confFile = getApnConfFile();
+ long newChecksum = getChecksum(confFile);
+ long oldChecksum = getApnConfChecksum();
+ if (DBG) log("newChecksum: " + newChecksum);
+ if (DBG) log("oldChecksum: " + oldChecksum);
+ if (newChecksum == oldChecksum) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
/**
* This function adds APNs from xml file(s) to db. The db may or may not be empty to begin
* with.
@@ -326,12 +401,7 @@
// Read external APNS data (partner-provided)
XmlPullParser confparser = null;
- // Environment.getRootDirectory() is a fancy way of saying ANDROID_ROOT or "/system".
- File confFile = new File(Environment.getRootDirectory(), PARTNER_APNS_PATH);
- File oemConfFile = new File(Environment.getOemDirectory(), OEM_APNS_PATH);
- File updatedConfFile = new File(Environment.getDataDirectory(), OTA_UPDATED_APNS_PATH);
- confFile = getNewerFile(confFile, oemConfFile);
- confFile = getNewerFile(confFile, updatedConfFile);
+ File confFile = getApnConfFile();
FileReader confreader = null;
if (DBG) log("confFile = " + confFile);
@@ -365,20 +435,17 @@
}
// Delete USER_DELETED
- db.delete(CARRIERS_TABLE, "edited=" + Telephony.Carriers.USER_DELETED + " or " +
- "edited=" + Telephony.Carriers.CARRIER_DELETED, null);
+ db.delete(CARRIERS_TABLE, IS_USER_DELETED + " or " + IS_CARRIER_DELETED, null);
// Change USER_DELETED_BUT_PRESENT_IN_XML to USER_DELETED
ContentValues cv = new ContentValues();
- cv.put(Telephony.Carriers.EDITED, Telephony.Carriers.USER_DELETED);
- db.update(CARRIERS_TABLE, cv, "edited=" + Telephony.Carriers.USER_DELETED_BUT_PRESENT_IN_XML,
- null);
+ cv.put(EDITED, USER_DELETED);
+ db.update(CARRIERS_TABLE, cv, IS_USER_DELETED_BUT_PRESENT_IN_XML, null);
// Change CARRIER_DELETED_BUT_PRESENT_IN_XML to CARRIER_DELETED
cv = new ContentValues();
- cv.put(Telephony.Carriers.EDITED, Telephony.Carriers.CARRIER_DELETED);
- db.update(CARRIERS_TABLE, cv, "edited=" + Telephony.Carriers.CARRIER_DELETED_BUT_PRESENT_IN_XML,
- null);
+ cv.put(EDITED, CARRIER_DELETED);
+ db.update(CARRIERS_TABLE, cv, IS_CARRIER_DELETED_BUT_PRESENT_IN_XML, null);
if (confreader != null) {
try {
@@ -387,6 +454,9 @@
// do nothing
}
}
+
+ // Update the stored checksum
+ setApnConfChecksum(getChecksum(confFile));
}
if (VDBG) log("dbh.initDatabase:- db=" + db);
@@ -571,15 +641,13 @@
c = db.query(CARRIERS_TABLE, proj, null, null, null, null, null);
log("dbh.onUpgrade:- after upgrading total number of rows: " + c.getCount());
c.close();
- c = db.query(CARRIERS_TABLE, proj, "edited=" + Telephony.Carriers.UNEDITED,
- null, null, null, null);
- log("dbh.onUpgrade:- after upgrading total number of rows with edited="
- + Telephony.Carriers.UNEDITED + ": " + c.getCount());
+ c = db.query(CARRIERS_TABLE, proj, IS_UNEDITED, null, null, null, null);
+ log("dbh.onUpgrade:- after upgrading total number of rows with " + IS_UNEDITED +
+ ": " + c.getCount());
c.close();
- c = db.query(CARRIERS_TABLE, proj, "edited!=" + Telephony.Carriers.UNEDITED,
- null, null, null, null);
- log("dbh.onUpgrade:- after upgrading total number of rows with edited!="
- + Telephony.Carriers.UNEDITED + ": " + c.getCount());
+ c = db.query(CARRIERS_TABLE, proj, IS_EDITED, null, null, null, null);
+ log("dbh.onUpgrade:- after upgrading total number of rows with " + IS_EDITED +
+ ": " + c.getCount());
c.close();
}
@@ -627,13 +695,13 @@
try {
c = db.query(CARRIERS_TABLE, null, null, null, null, null, null,
String.valueOf(1));
- if (c == null || c.getColumnIndex(Telephony.Carriers.USER_VISIBLE) == -1) {
+ if (c == null || c.getColumnIndex(USER_VISIBLE) == -1) {
db.execSQL("ALTER TABLE " + CARRIERS_TABLE + " ADD COLUMN " +
- Telephony.Carriers.USER_VISIBLE + " BOOLEAN DEFAULT 1;");
+ USER_VISIBLE + " BOOLEAN DEFAULT 1;");
} else {
if (DBG) {
log("onUpgrade skipping " + CARRIERS_TABLE + " upgrade. Column " +
- Telephony.Carriers.USER_VISIBLE + " already exists.");
+ USER_VISIBLE + " already exists.");
}
}
} finally {
@@ -706,62 +774,87 @@
}
}
+ private String queryValFirst(String field) {
+ return field + "=?";
+ }
+
+ private String queryVal(String field) {
+ return " and " + field + "=?";
+ }
+
+ private String queryValOrNull(String field) {
+ return " and (" + field + "=? or " + field + " is null)";
+ }
+
+ private String queryVal2OrNull(String field) {
+ return " and (" + field + "=? or " + field + "=? or " + field + " is null)";
+ }
+
private void deleteRow(SQLiteDatabase db, ContentValues values) {
if (VDBG) log("deleteRow");
- String where = "numeric=? and mcc=? and mnc=? and name=? and " +
- "(apn=? or apn is null) and " +
- "(user=? or user is null) and (server=? or server is null) and " +
- "(password=? or password is null) and (proxy=? or proxy is null) and " +
- "(port=? or port is null) and (mmsproxy=? or mmsproxy is null) and " +
- "(mmsport=? or mmsport is null) and (mmsc=? or mmsc is null) and " +
- "(authtype=? or authtype is null) and (type=? or type is null) and " +
- "(protocol=? or protocol is null) and " +
- "(roaming_protocol=? or roaming_protocol is null) and " +
- "(carrier_enabled=? or carrier_enabled=? or carrier_enabled is null) and " +
- "(bearer=? or bearer is null) and (mvno_type=? or mvno_type is null) and " +
- "(mvno_match_data=? or mvno_match_data is null) and " +
- "(profile_id=? or profile_id is null) and " +
- "(modem_cognitive=? or modem_cognitive=? or modem_cognitive is null) and " +
- "(max_conns=? or max_conns is null) and " +
- "(wait_time=? or wait_time is null) and " +
- "(max_conns_time=? or max_conns_time is null) and (mtu=? or mtu is null)";
+ String where = queryValFirst(NUMERIC) +
+ queryVal(MNC) +
+ queryVal(MNC) +
+ queryValOrNull(APN) +
+ queryValOrNull(USER) +
+ queryValOrNull(SERVER) +
+ queryValOrNull(PASSWORD) +
+ queryValOrNull(PROXY) +
+ queryValOrNull(PORT) +
+ queryValOrNull(MMSPROXY) +
+ queryValOrNull(MMSPORT) +
+ queryValOrNull(MMSC) +
+ queryValOrNull(AUTH_TYPE) +
+ queryValOrNull(TYPE) +
+ queryValOrNull(PROTOCOL) +
+ queryValOrNull(ROAMING_PROTOCOL) +
+ queryVal2OrNull(CARRIER_ENABLED) +
+ queryValOrNull(BEARER) +
+ queryValOrNull(MVNO_TYPE) +
+ queryValOrNull(MVNO_MATCH_DATA) +
+ queryValOrNull(PROFILE_ID) +
+ queryVal2OrNull(MODEM_COGNITIVE) +
+ queryValOrNull(MAX_CONNS) +
+ queryValOrNull(WAIT_TIME) +
+ queryValOrNull(MAX_CONNS_TIME) +
+ queryValOrNull(MTU);
String[] whereArgs = new String[29];
int i = 0;
- whereArgs[i++] = values.getAsString(Telephony.Carriers.NUMERIC);
- whereArgs[i++] = values.getAsString(Telephony.Carriers.MCC);
- whereArgs[i++] = values.getAsString(Telephony.Carriers.MNC);
- whereArgs[i++] = values.getAsString(Telephony.Carriers.NAME);
- whereArgs[i++] = values.containsKey(Telephony.Carriers.APN) ?
- values.getAsString(Telephony.Carriers.APN) : "";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.USER) ?
- values.getAsString(Telephony.Carriers.USER) : "";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.SERVER) ?
- values.getAsString(Telephony.Carriers.SERVER) : "";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.PASSWORD) ?
- values.getAsString(Telephony.Carriers.PASSWORD) : "";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.PROXY) ?
- values.getAsString(Telephony.Carriers.PROXY) : "";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.PORT) ?
- values.getAsString(Telephony.Carriers.PORT) : "";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.MMSPROXY) ?
- values.getAsString(Telephony.Carriers.MMSPROXY) : "";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.MMSPORT) ?
- values.getAsString(Telephony.Carriers.MMSPORT) : "";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.MMSC) ?
- values.getAsString(Telephony.Carriers.MMSC) : "";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.AUTH_TYPE) ?
- values.getAsString(Telephony.Carriers.AUTH_TYPE) : "-1";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.TYPE) ?
- values.getAsString(Telephony.Carriers.TYPE) : "";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.PROTOCOL) ?
- values.getAsString(Telephony.Carriers.PROTOCOL) : "IP";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.ROAMING_PROTOCOL) ?
- values.getAsString(Telephony.Carriers.ROAMING_PROTOCOL) : "IP";
+ whereArgs[i++] = values.getAsString(NUMERIC);
+ whereArgs[i++] = values.getAsString(MCC);
+ whereArgs[i++] = values.getAsString(MNC);
+ whereArgs[i++] = values.getAsString(NAME);
+ whereArgs[i++] = values.containsKey(APN) ?
+ values.getAsString(APN) : "";
+ whereArgs[i++] = values.containsKey(USER) ?
+ values.getAsString(USER) : "";
+ whereArgs[i++] = values.containsKey(SERVER) ?
+ values.getAsString(SERVER) : "";
+ whereArgs[i++] = values.containsKey(PASSWORD) ?
+ values.getAsString(PASSWORD) : "";
+ whereArgs[i++] = values.containsKey(PROXY) ?
+ values.getAsString(PROXY) : "";
+ whereArgs[i++] = values.containsKey(PORT) ?
+ values.getAsString(PORT) : "";
+ whereArgs[i++] = values.containsKey(MMSPROXY) ?
+ values.getAsString(MMSPROXY) : "";
+ whereArgs[i++] = values.containsKey(MMSPORT) ?
+ values.getAsString(MMSPORT) : "";
+ whereArgs[i++] = values.containsKey(MMSC) ?
+ values.getAsString(MMSC) : "";
+ whereArgs[i++] = values.containsKey(AUTH_TYPE) ?
+ values.getAsString(AUTH_TYPE) : "-1";
+ whereArgs[i++] = values.containsKey(TYPE) ?
+ values.getAsString(TYPE) : "";
+ whereArgs[i++] = values.containsKey(PROTOCOL) ?
+ values.getAsString(PROTOCOL) : "IP";
+ whereArgs[i++] = values.containsKey(ROAMING_PROTOCOL) ?
+ values.getAsString(ROAMING_PROTOCOL) : "IP";
- if (values.containsKey(Telephony.Carriers.CARRIER_ENABLED) &&
- (values.getAsString(Telephony.Carriers.CARRIER_ENABLED).
+ if (values.containsKey(CARRIER_ENABLED) &&
+ (values.getAsString(CARRIER_ENABLED).
equalsIgnoreCase("false") ||
- values.getAsString(Telephony.Carriers.CARRIER_ENABLED).equals("0"))) {
+ values.getAsString(CARRIER_ENABLED).equals("0"))) {
whereArgs[i++] = "false";
whereArgs[i++] = "0";
} else {
@@ -769,19 +862,19 @@
whereArgs[i++] = "1";
}
- whereArgs[i++] = values.containsKey(Telephony.Carriers.BEARER) ?
- values.getAsString(Telephony.Carriers.BEARER) : "0";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.MVNO_TYPE) ?
- values.getAsString(Telephony.Carriers.MVNO_TYPE) : "";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.MVNO_MATCH_DATA) ?
- values.getAsString(Telephony.Carriers.MVNO_MATCH_DATA) : "";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.PROFILE_ID) ?
- values.getAsString(Telephony.Carriers.PROFILE_ID) : "0";
+ whereArgs[i++] = values.containsKey(BEARER) ?
+ values.getAsString(BEARER) : "0";
+ whereArgs[i++] = values.containsKey(MVNO_TYPE) ?
+ values.getAsString(MVNO_TYPE) : "";
+ whereArgs[i++] = values.containsKey(MVNO_MATCH_DATA) ?
+ values.getAsString(MVNO_MATCH_DATA) : "";
+ whereArgs[i++] = values.containsKey(PROFILE_ID) ?
+ values.getAsString(PROFILE_ID) : "0";
- if (values.containsKey(Telephony.Carriers.MODEM_COGNITIVE) &&
- (values.getAsString(Telephony.Carriers.MODEM_COGNITIVE).
+ if (values.containsKey(MODEM_COGNITIVE) &&
+ (values.getAsString(MODEM_COGNITIVE).
equalsIgnoreCase("true") ||
- values.getAsString(Telephony.Carriers.MODEM_COGNITIVE).equals("1"))) {
+ values.getAsString(MODEM_COGNITIVE).equals("1"))) {
whereArgs[i++] = "true";
whereArgs[i++] = "1";
} else {
@@ -789,14 +882,14 @@
whereArgs[i++] = "0";
}
- whereArgs[i++] = values.containsKey(Telephony.Carriers.MAX_CONNS) ?
- values.getAsString(Telephony.Carriers.MAX_CONNS) : "0";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.WAIT_TIME) ?
- values.getAsString(Telephony.Carriers.WAIT_TIME) : "0";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.MAX_CONNS_TIME) ?
- values.getAsString(Telephony.Carriers.MAX_CONNS_TIME) : "0";
- whereArgs[i++] = values.containsKey(Telephony.Carriers.MTU) ?
- values.getAsString(Telephony.Carriers.MTU) : "0";
+ whereArgs[i++] = values.containsKey(MAX_CONNS) ?
+ values.getAsString(MAX_CONNS) : "0";
+ whereArgs[i++] = values.containsKey(WAIT_TIME) ?
+ values.getAsString(WAIT_TIME) : "0";
+ whereArgs[i++] = values.containsKey(MAX_CONNS_TIME) ?
+ values.getAsString(MAX_CONNS_TIME) : "0";
+ whereArgs[i++] = values.containsKey(MTU) ?
+ values.getAsString(MTU) : "0";
if (VDBG) {
log("deleteRow: where: " + where);
@@ -824,74 +917,70 @@
// with default if there's a default value for the field
// String vals
- getStringValueFromCursor(cv, c, Telephony.Carriers.NAME);
- getStringValueFromCursor(cv, c, Telephony.Carriers.NUMERIC);
- getStringValueFromCursor(cv, c, Telephony.Carriers.MCC);
- getStringValueFromCursor(cv, c, Telephony.Carriers.MNC);
- getStringValueFromCursor(cv, c, Telephony.Carriers.APN);
- getStringValueFromCursor(cv, c, Telephony.Carriers.USER);
- getStringValueFromCursor(cv, c, Telephony.Carriers.SERVER);
- getStringValueFromCursor(cv, c, Telephony.Carriers.PASSWORD);
- getStringValueFromCursor(cv, c, Telephony.Carriers.PROXY);
- getStringValueFromCursor(cv, c, Telephony.Carriers.PORT);
- getStringValueFromCursor(cv, c, Telephony.Carriers.MMSPROXY);
- getStringValueFromCursor(cv, c, Telephony.Carriers.MMSPORT);
- getStringValueFromCursor(cv, c, Telephony.Carriers.MMSC);
- getStringValueFromCursor(cv, c, Telephony.Carriers.TYPE);
- getStringValueFromCursor(cv, c, Telephony.Carriers.PROTOCOL);
- getStringValueFromCursor(cv, c, Telephony.Carriers.ROAMING_PROTOCOL);
- getStringValueFromCursor(cv, c, Telephony.Carriers.MVNO_TYPE);
- getStringValueFromCursor(cv, c, Telephony.Carriers.MVNO_MATCH_DATA);
+ getStringValueFromCursor(cv, c, NAME);
+ getStringValueFromCursor(cv, c, NUMERIC);
+ getStringValueFromCursor(cv, c, MCC);
+ getStringValueFromCursor(cv, c, MNC);
+ getStringValueFromCursor(cv, c, APN);
+ getStringValueFromCursor(cv, c, USER);
+ getStringValueFromCursor(cv, c, SERVER);
+ getStringValueFromCursor(cv, c, PASSWORD);
+ getStringValueFromCursor(cv, c, PROXY);
+ getStringValueFromCursor(cv, c, PORT);
+ getStringValueFromCursor(cv, c, MMSPROXY);
+ getStringValueFromCursor(cv, c, MMSPORT);
+ getStringValueFromCursor(cv, c, MMSC);
+ getStringValueFromCursor(cv, c, TYPE);
+ getStringValueFromCursor(cv, c, PROTOCOL);
+ getStringValueFromCursor(cv, c, ROAMING_PROTOCOL);
+ getStringValueFromCursor(cv, c, MVNO_TYPE);
+ getStringValueFromCursor(cv, c, MVNO_MATCH_DATA);
// bool/int vals
- getIntValueFromCursor(cv, c, Telephony.Carriers.AUTH_TYPE);
- getIntValueFromCursor(cv, c, Telephony.Carriers.CURRENT);
- getIntValueFromCursor(cv, c, Telephony.Carriers.CARRIER_ENABLED);
- getIntValueFromCursor(cv, c, Telephony.Carriers.BEARER);
- getIntValueFromCursor(cv, c, Telephony.Carriers.SUBSCRIPTION_ID);
- getIntValueFromCursor(cv, c, Telephony.Carriers.PROFILE_ID);
- getIntValueFromCursor(cv, c, Telephony.Carriers.MODEM_COGNITIVE);
- getIntValueFromCursor(cv, c, Telephony.Carriers.MAX_CONNS);
- getIntValueFromCursor(cv, c, Telephony.Carriers.WAIT_TIME);
- getIntValueFromCursor(cv, c, Telephony.Carriers.MAX_CONNS_TIME);
- getIntValueFromCursor(cv, c, Telephony.Carriers.MTU);
+ getIntValueFromCursor(cv, c, AUTH_TYPE);
+ getIntValueFromCursor(cv, c, CURRENT);
+ getIntValueFromCursor(cv, c, CARRIER_ENABLED);
+ getIntValueFromCursor(cv, c, BEARER);
+ getIntValueFromCursor(cv, c, SUBSCRIPTION_ID);
+ getIntValueFromCursor(cv, c, PROFILE_ID);
+ getIntValueFromCursor(cv, c, MODEM_COGNITIVE);
+ getIntValueFromCursor(cv, c, MAX_CONNS);
+ getIntValueFromCursor(cv, c, WAIT_TIME);
+ getIntValueFromCursor(cv, c, MAX_CONNS_TIME);
+ getIntValueFromCursor(cv, c, MTU);
// Change bearer to a bitmask
- String bearerStr = c.getString(c.getColumnIndex(Telephony.Carriers.BEARER));
+ String bearerStr = c.getString(c.getColumnIndex(BEARER));
if (!TextUtils.isEmpty(bearerStr)) {
int bearer_bitmask = ServiceState.getBitmaskForTech(
Integer.parseInt(bearerStr));
- cv.put(Telephony.Carriers.BEARER_BITMASK, bearer_bitmask);
+ cv.put(BEARER_BITMASK, bearer_bitmask);
}
int userEditedColumnIdx = c.getColumnIndex("user_edited");
if (userEditedColumnIdx != -1) {
String user_edited = c.getString(userEditedColumnIdx);
if (!TextUtils.isEmpty(user_edited)) {
- cv.put(Telephony.Carriers.EDITED, new Integer(user_edited));
+ cv.put(EDITED, new Integer(user_edited));
}
} else {
- cv.put(Telephony.Carriers.EDITED, Telephony.Carriers.USER_EDITED);
+ cv.put(EDITED, USER_EDITED);
}
- // New EDITED column. Default value (Telephony.Carriers.UNEDITED) will
+ // New EDITED column. Default value (UNEDITED) will
// be used for all rows except for non-mvno entries for plmns indicated
// by resource: those will be set to CARRIER_EDITED to preserve
// their current values
- val = c.getString(c.getColumnIndex(Telephony.Carriers.NUMERIC));
+ val = c.getString(c.getColumnIndex(NUMERIC));
for (String s : persistApnsForPlmns) {
if (!TextUtils.isEmpty(val) && val.equals(s) &&
- (!cv.containsKey(Telephony.Carriers.MVNO_TYPE) ||
- TextUtils.isEmpty(cv.getAsString(Telephony.Carriers.
- MVNO_TYPE)))) {
+ (!cv.containsKey(MVNO_TYPE) ||
+ TextUtils.isEmpty(cv.getAsString(MVNO_TYPE)))) {
if (userEditedColumnIdx == -1) {
- cv.put(Telephony.Carriers.EDITED,
- Telephony.Carriers.CARRIER_EDITED);
+ cv.put(EDITED, CARRIER_EDITED);
} else { // if (oldVersion == 14) -- if db had user_edited column
- if (cv.getAsInteger(Telephony.Carriers.EDITED) ==
- Telephony.Carriers.USER_EDITED) {
- cv.put(Telephony.Carriers.EDITED,
- Telephony.Carriers.CARRIER_EDITED);
+ if (cv.getAsInteger(EDITED) == USER_EDITED) {
+ cv.put(EDITED, CARRIER_EDITED);
}
}
@@ -960,50 +1049,50 @@
String mnc = parser.getAttributeValue(null, "mnc");
String numeric = mcc + mnc;
- map.put(Telephony.Carriers.NUMERIC, numeric);
- map.put(Telephony.Carriers.MCC, mcc);
- map.put(Telephony.Carriers.MNC, mnc);
- map.put(Telephony.Carriers.NAME, parser.getAttributeValue(null, "carrier"));
+ map.put(NUMERIC, numeric);
+ map.put(MCC, mcc);
+ map.put(MNC, mnc);
+ map.put(NAME, parser.getAttributeValue(null, "carrier"));
// do not add NULL to the map so that default values can be inserted in db
- addStringAttribute(parser, "apn", map, Telephony.Carriers.APN);
- addStringAttribute(parser, "user", map, Telephony.Carriers.USER);
- addStringAttribute(parser, "server", map, Telephony.Carriers.SERVER);
- addStringAttribute(parser, "password", map, Telephony.Carriers.PASSWORD);
- addStringAttribute(parser, "proxy", map, Telephony.Carriers.PROXY);
- addStringAttribute(parser, "port", map, Telephony.Carriers.PORT);
- addStringAttribute(parser, "mmsproxy", map, Telephony.Carriers.MMSPROXY);
- addStringAttribute(parser, "mmsport", map, Telephony.Carriers.MMSPORT);
- addStringAttribute(parser, "mmsc", map, Telephony.Carriers.MMSC);
- addStringAttribute(parser, "type", map, Telephony.Carriers.TYPE);
- addStringAttribute(parser, "protocol", map, Telephony.Carriers.PROTOCOL);
- addStringAttribute(parser, "roaming_protocol", map, Telephony.Carriers.ROAMING_PROTOCOL);
+ addStringAttribute(parser, "apn", map, APN);
+ addStringAttribute(parser, "user", map, USER);
+ addStringAttribute(parser, "server", map, SERVER);
+ addStringAttribute(parser, "password", map, PASSWORD);
+ addStringAttribute(parser, "proxy", map, PROXY);
+ addStringAttribute(parser, "port", map, PORT);
+ addStringAttribute(parser, "mmsproxy", map, MMSPROXY);
+ addStringAttribute(parser, "mmsport", map, MMSPORT);
+ addStringAttribute(parser, "mmsc", map, MMSC);
+ addStringAttribute(parser, "type", map, TYPE);
+ addStringAttribute(parser, "protocol", map, PROTOCOL);
+ addStringAttribute(parser, "roaming_protocol", map, ROAMING_PROTOCOL);
- addIntAttribute(parser, "authtype", map, Telephony.Carriers.AUTH_TYPE);
- addIntAttribute(parser, "bearer", map, Telephony.Carriers.BEARER);
- addIntAttribute(parser, "profile_id", map, Telephony.Carriers.PROFILE_ID);
- addIntAttribute(parser, "max_conns", map, Telephony.Carriers.MAX_CONNS);
- addIntAttribute(parser, "wait_time", map, Telephony.Carriers.WAIT_TIME);
- addIntAttribute(parser, "max_conns_time", map, Telephony.Carriers.MAX_CONNS_TIME);
- addIntAttribute(parser, "mtu", map, Telephony.Carriers.MTU);
+ addIntAttribute(parser, "authtype", map, AUTH_TYPE);
+ addIntAttribute(parser, "bearer", map, BEARER);
+ addIntAttribute(parser, "profile_id", map, PROFILE_ID);
+ addIntAttribute(parser, "max_conns", map, MAX_CONNS);
+ addIntAttribute(parser, "wait_time", map, WAIT_TIME);
+ addIntAttribute(parser, "max_conns_time", map, MAX_CONNS_TIME);
+ addIntAttribute(parser, "mtu", map, MTU);
- addBoolAttribute(parser, "carrier_enabled", map, Telephony.Carriers.CARRIER_ENABLED);
- addBoolAttribute(parser, "modem_cognitive", map, Telephony.Carriers.MODEM_COGNITIVE);
- addBoolAttribute(parser, "user_visible", map, Telephony.Carriers.USER_VISIBLE);
+ addBoolAttribute(parser, "carrier_enabled", map, CARRIER_ENABLED);
+ addBoolAttribute(parser, "modem_cognitive", map, MODEM_COGNITIVE);
+ addBoolAttribute(parser, "user_visible", map, USER_VISIBLE);
String bearerList = parser.getAttributeValue(null, "bearer_bitmask");
if (bearerList != null) {
int bearerBitmask = ServiceState.getBitmaskFromString(bearerList);
- map.put(Telephony.Carriers.BEARER_BITMASK, bearerBitmask);
+ map.put(BEARER_BITMASK, bearerBitmask);
}
String mvno_type = parser.getAttributeValue(null, "mvno_type");
if (mvno_type != null) {
String mvno_match_data = parser.getAttributeValue(null, "mvno_match_data");
if (mvno_match_data != null) {
- map.put(Telephony.Carriers.MVNO_TYPE, mvno_type);
- map.put(Telephony.Carriers.MVNO_MATCH_DATA, mvno_match_data);
+ map.put(MVNO_TYPE, mvno_type);
+ map.put(MVNO_MATCH_DATA, mvno_match_data);
}
}
@@ -1068,9 +1157,9 @@
}
static public ContentValues setDefaultValue(ContentValues values) {
- if (!values.containsKey(Telephony.Carriers.SUBSCRIPTION_ID)) {
+ if (!values.containsKey(SUBSCRIPTION_ID)) {
int subId = SubscriptionManager.getDefaultSubscriptionId();
- values.put(Telephony.Carriers.SUBSCRIPTION_ID, subId);
+ values.put(SUBSCRIPTION_ID, subId);
}
return values;
@@ -1079,8 +1168,7 @@
private void insertAddingDefaults(SQLiteDatabase db, ContentValues row) {
row = setDefaultValue(row);
try {
- db.insertWithOnConflict(CARRIERS_TABLE, null, row,
- SQLiteDatabase.CONFLICT_ABORT);
+ db.insertWithOnConflict(CARRIERS_TABLE, null, row, SQLiteDatabase.CONFLICT_ABORT);
if (VDBG) log("dbh.insertAddingDefaults: db.insert returned >= 0; insert " +
"successful for cv " + row);
} catch (SQLException e) {
@@ -1094,20 +1182,19 @@
if (oldRow != null) {
// Update the row
ContentValues mergedValues = new ContentValues();
- int edited = oldRow.getInt(oldRow.getColumnIndex(
- Telephony.Carriers.EDITED));
+ int edited = oldRow.getInt(oldRow.getColumnIndex(EDITED));
int old_edited = edited;
- if (edited != Telephony.Carriers.UNEDITED) {
- if (edited == Telephony.Carriers.USER_DELETED) {
+ if (edited != UNEDITED) {
+ if (edited == USER_DELETED) {
// USER_DELETED_BUT_PRESENT_IN_XML indicates entry has been deleted
// by user but present in apn xml file.
- edited = Telephony.Carriers.USER_DELETED_BUT_PRESENT_IN_XML;
- } else if (edited == Telephony.Carriers.CARRIER_DELETED) {
+ edited = USER_DELETED_BUT_PRESENT_IN_XML;
+ } else if (edited == CARRIER_DELETED) {
// CARRIER_DELETED_BUT_PRESENT_IN_XML indicates entry has been deleted
// by user but present in apn xml file.
- edited = Telephony.Carriers.CARRIER_DELETED_BUT_PRESENT_IN_XML;
+ edited = CARRIER_DELETED_BUT_PRESENT_IN_XML;
}
- mergedValues.put(Telephony.Carriers.EDITED, edited);
+ mergedValues.put(EDITED, edited);
}
mergeFieldsAndUpdateDb(db, CARRIERS_TABLE, oldRow, row, mergedValues, false,
@@ -1124,14 +1211,14 @@
public static void mergeFieldsAndUpdateDb(SQLiteDatabase db, String table, Cursor oldRow,
ContentValues newRow, ContentValues mergedValues,
boolean onUpgrade, Context context) {
- if (newRow.containsKey(Telephony.Carriers.TYPE)) {
+ if (newRow.containsKey(TYPE)) {
// Merge the types
- String oldType = oldRow.getString(oldRow.getColumnIndex(Telephony.Carriers.TYPE));
- String newType = newRow.getAsString(Telephony.Carriers.TYPE);
+ String oldType = oldRow.getString(oldRow.getColumnIndex(TYPE));
+ String newType = newRow.getAsString(TYPE);
if (!oldType.equalsIgnoreCase(newType)) {
if (oldType.equals("") || newType.equals("")) {
- newRow.put(Telephony.Carriers.TYPE, "");
+ newRow.put(TYPE, "");
} else {
String[] oldTypes = oldType.toLowerCase().split(",");
String[] newTypes = newType.toLowerCase().split(",");
@@ -1139,9 +1226,9 @@
if (VDBG) {
log("mergeFieldsAndUpdateDb: Calling separateRowsNeeded() oldType=" +
oldType + " old bearer=" + oldRow.getInt(oldRow.getColumnIndex(
- Telephony.Carriers.BEARER_BITMASK)) +
+ BEARER_BITMASK)) +
" old profile_id=" + oldRow.getInt(oldRow.getColumnIndex(
- Telephony.Carriers.PROFILE_ID)) +
+ PROFILE_ID)) +
" newRow " + newRow);
}
@@ -1165,26 +1252,24 @@
for (int i = 0; i < mergedTypes.size(); i++) {
mergedType.append((i == 0 ? "" : ",") + mergedTypes.get(i));
}
- newRow.put(Telephony.Carriers.TYPE, mergedType.toString());
+ newRow.put(TYPE, mergedType.toString());
}
}
- mergedValues.put(Telephony.Carriers.TYPE, newRow.getAsString(
- Telephony.Carriers.TYPE));
+ mergedValues.put(TYPE, newRow.getAsString(
+ TYPE));
}
- if (newRow.containsKey(Telephony.Carriers.BEARER_BITMASK)) {
- int oldBearer = oldRow.getInt(oldRow.getColumnIndex(Telephony.Carriers.
- BEARER_BITMASK));
- int newBearer = newRow.getAsInteger(Telephony.Carriers.BEARER_BITMASK);
+ if (newRow.containsKey(BEARER_BITMASK)) {
+ int oldBearer = oldRow.getInt(oldRow.getColumnIndex(BEARER_BITMASK));
+ int newBearer = newRow.getAsInteger(BEARER_BITMASK);
if (oldBearer != newBearer) {
if (oldBearer == 0 || newBearer == 0) {
- newRow.put(Telephony.Carriers.BEARER_BITMASK, 0);
+ newRow.put(BEARER_BITMASK, 0);
} else {
- newRow.put(Telephony.Carriers.BEARER_BITMASK, (oldBearer | newBearer));
+ newRow.put(BEARER_BITMASK, (oldBearer | newBearer));
}
}
- mergedValues.put(Telephony.Carriers.BEARER_BITMASK, newRow.getAsInteger(
- Telephony.Carriers.BEARER_BITMASK));
+ mergedValues.put(BEARER_BITMASK, newRow.getAsInteger(BEARER_BITMASK));
}
if (!onUpgrade) {
@@ -1212,8 +1297,7 @@
String[] persistApnsForPlmns = context.getResources().getStringArray(
R.array.persist_apns_for_plmn);
for (String s : persistApnsForPlmns) {
- if (s.equalsIgnoreCase(newRow.getAsString(Telephony.Carriers.
- NUMERIC))) {
+ if (s.equalsIgnoreCase(newRow.getAsString(NUMERIC))) {
match = true;
break;
}
@@ -1224,10 +1308,8 @@
// APN falls under persist_apns_for_plmn
// Check if only difference between old type and new type is that
// one has dun
- ArrayList<String> oldTypesAl = new ArrayList<String>(
- Arrays.asList(oldTypes));
- ArrayList<String> newTypesAl = new ArrayList<String>(
- Arrays.asList(newTypes));
+ ArrayList<String> oldTypesAl = new ArrayList<String>(Arrays.asList(oldTypes));
+ ArrayList<String> newTypesAl = new ArrayList<String>(Arrays.asList(newTypes));
ArrayList<String> listWithDun = null;
ArrayList<String> listWithoutDun = null;
boolean dunInOld = false;
@@ -1242,8 +1324,7 @@
return false;
}
- if (listWithDun.contains("dun") &&
- !listWithoutDun.contains("dun")) {
+ if (listWithDun.contains("dun") && !listWithoutDun.contains("dun")) {
listWithoutDun.add("dun");
if (!listWithDun.containsAll(listWithoutDun)) {
return false;
@@ -1252,8 +1333,7 @@
// Only difference between old type and new type is that
// one has dun
// Check if profile_id is 0/not set
- if (oldRow.getInt(oldRow.getColumnIndex(Telephony.Carriers.
- PROFILE_ID)) == 0) {
+ if (oldRow.getInt(oldRow.getColumnIndex(PROFILE_ID)) == 0) {
if (dunInOld) {
// Update oldRow to remove dun from its type field
ContentValues updateOldRow = new ContentValues();
@@ -1267,18 +1347,16 @@
}
String updatedType = sb.toString();
if (VDBG) {
- log("separateRowsNeeded: updating type in oldRow to " +
- updatedType);
+ log("separateRowsNeeded: updating type in oldRow to " + updatedType);
}
- updateOldRow.put(Telephony.Carriers.TYPE, updatedType);
+ updateOldRow.put(TYPE, updatedType);
db.update(table, updateOldRow,
"_id=" + oldRow.getInt(oldRow.getColumnIndex("_id")), null);
return true;
} else {
if (VDBG) log("separateRowsNeeded: adding profile id 1 to newRow");
// Update newRow to set profile_id to 1
- newRow.put(Telephony.Carriers.PROFILE_ID,
- new Integer(1));
+ newRow.put(PROFILE_ID, new Integer(1));
}
} else {
return false;
@@ -1287,13 +1365,11 @@
// If match was found, both oldRow and newRow need to exist
// separately in db. Add newRow to db.
try {
- db.insertWithOnConflict(table, null, newRow,
- SQLiteDatabase.CONFLICT_REPLACE);
+ db.insertWithOnConflict(table, null, newRow, SQLiteDatabase.CONFLICT_REPLACE);
if (VDBG) log("separateRowsNeeded: added newRow with profile id 1 to db");
return true;
} catch (SQLException e) {
- loge("Exception on trying to add new row after " +
- "updating profile_id");
+ loge("Exception on trying to add new row after updating profile_id");
}
}
@@ -1304,50 +1380,37 @@
ContentValues row) {
// Conflict is possible only when numeric, mcc, mnc (fields without any default value)
// are set in the new row
- if (!row.containsKey(Telephony.Carriers.NUMERIC) ||
- !row.containsKey(Telephony.Carriers.MCC) ||
- !row.containsKey(Telephony.Carriers.MNC)) {
+ if (!row.containsKey(NUMERIC) || !row.containsKey(MCC) || !row.containsKey(MNC)) {
loge("dbh.selectConflictingRow: called for non-conflicting row: " + row);
return null;
}
String[] columns = { "_id",
- Telephony.Carriers.TYPE,
- Telephony.Carriers.EDITED,
- Telephony.Carriers.BEARER_BITMASK,
- Telephony.Carriers.PROFILE_ID };
- String selection = "numeric=? AND mcc=? AND mnc=? AND apn=? AND proxy=? AND port=? "
- + "AND mmsproxy=? AND mmsport=? AND mmsc=? AND carrier_enabled=? AND bearer=? "
- + "AND mvno_type=? AND mvno_match_data=? AND profile_id=?";
+ TYPE,
+ EDITED,
+ BEARER_BITMASK,
+ PROFILE_ID };
+ String selection = TextUtils.join("=? AND ", CARRIERS_UNIQUE_FIELDS) + "=?";
int i = 0;
String[] selectionArgs = new String[14];
- selectionArgs[i++] = row.getAsString(Telephony.Carriers.NUMERIC);
- selectionArgs[i++] = row.getAsString(Telephony.Carriers.MCC);
- selectionArgs[i++] = row.getAsString(Telephony.Carriers.MNC);
- selectionArgs[i++] = row.containsKey(Telephony.Carriers.APN) ?
- row.getAsString(Telephony.Carriers.APN) : "";
- selectionArgs[i++] = row.containsKey(Telephony.Carriers.PROXY) ?
- row.getAsString(Telephony.Carriers.PROXY) : "";
- selectionArgs[i++] = row.containsKey(Telephony.Carriers.PORT) ?
- row.getAsString(Telephony.Carriers.PORT) : "";
- selectionArgs[i++] = row.containsKey(Telephony.Carriers.MMSPROXY) ?
- row.getAsString(Telephony.Carriers.MMSPROXY) : "";
- selectionArgs[i++] = row.containsKey(Telephony.Carriers.MMSPORT) ?
- row.getAsString(Telephony.Carriers.MMSPORT) : "";
- selectionArgs[i++] = row.containsKey(Telephony.Carriers.MMSC) ?
- row.getAsString(Telephony.Carriers.MMSC) : "";
- selectionArgs[i++] = row.containsKey(Telephony.Carriers.CARRIER_ENABLED) &&
- (row.getAsString(Telephony.Carriers.CARRIER_ENABLED).equals("0") ||
- row.getAsString(Telephony.Carriers.CARRIER_ENABLED).equals("false")) ?
+ selectionArgs[i++] = row.getAsString(NUMERIC);
+ selectionArgs[i++] = row.getAsString(MCC);
+ selectionArgs[i++] = row.getAsString(MNC);
+ selectionArgs[i++] = row.containsKey(APN) ? row.getAsString(APN) : "";
+ selectionArgs[i++] = row.containsKey(PROXY) ? row.getAsString(PROXY) : "";
+ selectionArgs[i++] = row.containsKey(PORT) ? row.getAsString(PORT) : "";
+ selectionArgs[i++] = row.containsKey(MMSPROXY) ? row.getAsString(MMSPROXY) : "";
+ selectionArgs[i++] = row.containsKey(MMSPORT) ? row.getAsString(MMSPORT) : "";
+ selectionArgs[i++] = row.containsKey(MMSC) ? row.getAsString(MMSC) : "";
+ selectionArgs[i++] = row.containsKey(CARRIER_ENABLED) &&
+ (row.getAsString(CARRIER_ENABLED).equals("0") ||
+ row.getAsString(CARRIER_ENABLED).equals("false")) ?
"0" : "1";
- selectionArgs[i++] = row.containsKey(Telephony.Carriers.BEARER) ?
- row.getAsString(Telephony.Carriers.BEARER) : "0";
- selectionArgs[i++] = row.containsKey(Telephony.Carriers.MVNO_TYPE) ?
- row.getAsString(Telephony.Carriers.MVNO_TYPE) : "";
- selectionArgs[i++] = row.containsKey(Telephony.Carriers.MVNO_MATCH_DATA) ?
- row.getAsString(Telephony.Carriers.MVNO_MATCH_DATA) : "";
- selectionArgs[i++] = row.containsKey(Telephony.Carriers.PROFILE_ID) ?
- row.getAsString(Telephony.Carriers.PROFILE_ID) : "0";
+ selectionArgs[i++] = row.containsKey(BEARER) ? row.getAsString(BEARER) : "0";
+ selectionArgs[i++] = row.containsKey(MVNO_TYPE) ? row.getAsString(MVNO_TYPE) : "";
+ selectionArgs[i++] = row.containsKey(MVNO_MATCH_DATA) ?
+ row.getAsString(MVNO_MATCH_DATA) : "";
+ selectionArgs[i++] = row.containsKey(PROFILE_ID) ? row.getAsString(PROFILE_ID) : "0";
Cursor c = db.query(table, columns, selection, selectionArgs, null, null, null);
@@ -1399,7 +1462,7 @@
List<SubscriptionInfo> subInfoList = sm.getAllSubscriptionInfoList();
for (SubscriptionInfo subInfo : subInfoList) {
SharedPreferences spPrefFile = getContext().getSharedPreferences(
- PREF_FILE + subInfo.getSubscriptionId(), Context.MODE_PRIVATE);
+ PREF_FILE_APN + subInfo.getSubscriptionId(), Context.MODE_PRIVATE);
if (spPrefFile != null) {
SharedPreferences.Editor editor = spPrefFile.edit();
editor.clear();
@@ -1423,7 +1486,8 @@
}
private void setPreferredApnId(Long id, int subId) {
- SharedPreferences sp = getContext().getSharedPreferences(PREF_FILE, Context.MODE_PRIVATE);
+ SharedPreferences sp = getContext().getSharedPreferences(PREF_FILE_APN,
+ Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putLong(COLUMN_APN_ID + subId, id != null ? id.longValue() : INVALID_APN_ID);
editor.apply();
@@ -1434,7 +1498,8 @@
}
private long getPreferredApnId(int subId, boolean checkApnSp) {
- SharedPreferences sp = getContext().getSharedPreferences(PREF_FILE, Context.MODE_PRIVATE);
+ SharedPreferences sp = getContext().getSharedPreferences(PREF_FILE_APN,
+ Context.MODE_PRIVATE);
long apnId = sp.getLong(COLUMN_APN_ID + subId, INVALID_APN_ID);
if (apnId == INVALID_APN_ID && checkApnSp) {
apnId = getPreferredApnIdFromApn(subId);
@@ -1447,7 +1512,8 @@
}
private void deletePreferredApnId() {
- SharedPreferences sp = getContext().getSharedPreferences(PREF_FILE, Context.MODE_PRIVATE);
+ SharedPreferences sp = getContext().getSharedPreferences(PREF_FILE_APN,
+ Context.MODE_PRIVATE);
// before deleting, save actual preferred apns (not the ids) in a separate SP
Map<String, ?> allPrefApnId = sp.getAll();
for (String key : allPrefApnId.keySet()) {
@@ -1511,7 +1577,8 @@
}
i++;
}
- Cursor c = db.query(CARRIERS_TABLE, new String[]{"_id"}, where, whereArgs, null, null, null);
+ Cursor c = db.query(CARRIERS_TABLE, new String[]{"_id"}, where, whereArgs, null, null,
+ null);
if (c != null) {
if (c.getCount() == 1) {
c.moveToFirst();
@@ -1567,7 +1634,7 @@
return null;
}
if (DBG) log("subIdString = " + subIdString + " subId = " + subId);
- qb.appendWhere("numeric = '" + mTelephonyManager.getSimOperator(subId)+"'");
+ qb.appendWhere(NUMERIC + " = '" + mTelephonyManager.getSimOperator(subId) + "'");
// FIXME alter the selection to pass subId
// selection = selection + "and subId = "
}
@@ -1633,11 +1700,11 @@
if (match != URL_SIMINFO) {
if (projectionIn != null) {
for (String column : projectionIn) {
- if (Telephony.Carriers.TYPE.equals(column) ||
- Telephony.Carriers.MMSC.equals(column) ||
- Telephony.Carriers.MMSPROXY.equals(column) ||
- Telephony.Carriers.MMSPORT.equals(column) ||
- Telephony.Carriers.APN.equals(column)) {
+ if (TYPE.equals(column) ||
+ MMSC.equals(column) ||
+ MMSPROXY.equals(column) ||
+ MMSPORT.equals(column) ||
+ APN.equals(column)) {
// noop
} else {
checkPermission();
@@ -1660,10 +1727,10 @@
} else {
selection += " and ";
}
- selection += "edited!=" + Telephony.Carriers.USER_DELETED + " and edited!="
- + Telephony.Carriers.USER_DELETED_BUT_PRESENT_IN_XML + " and edited!="
- + Telephony.Carriers.CARRIER_DELETED + " and edited!="
- + Telephony.Carriers.CARRIER_DELETED_BUT_PRESENT_IN_XML;
+ selection += IS_NOT_USER_DELETED + " and " +
+ IS_NOT_USER_DELETED_BUT_PRESENT_IN_XML + " and " +
+ IS_NOT_CARRIER_DELETED + " and " +
+ IS_NOT_CARRIER_DELETED_BUT_PRESENT_IN_XML;
if (VDBG) log("query: selection modified to " + selection);
}
ret = qb.query(db, projectionIn, selection, selectionArgs, null, null, sort);
@@ -1733,18 +1800,18 @@
}
values = DatabaseHelper.setDefaultValue(values);
- if (!values.containsKey(Telephony.Carriers.EDITED)) {
- values.put(Telephony.Carriers.EDITED, Telephony.Carriers.USER_EDITED);
+ if (!values.containsKey(EDITED)) {
+ values.put(EDITED, USER_EDITED);
}
try {
// Replace on conflict so that if same APN is present in db with edited
- // as Telephony.Carriers.UNEDITED or USER/CARRIER_DELETED, it is replaced with
+ // as UNEDITED or USER/CARRIER_DELETED, it is replaced with
// edited USER/CARRIER_EDITED
long rowID = db.insertWithOnConflict(CARRIERS_TABLE, null, values,
SQLiteDatabase.CONFLICT_REPLACE);
if (rowID >= 0) {
- result = ContentUris.withAppendedId(Telephony.Carriers.CONTENT_URI, rowID);
+ result = ContentUris.withAppendedId(CONTENT_URI, rowID);
notify = true;
}
if (VDBG) log("insert: inserted " + values.toString() + " rowID = " + rowID);
@@ -1782,11 +1849,11 @@
case URL_CURRENT:
{
// zero out the previous operator
- db.update(CARRIERS_TABLE, s_currentNullMap, "current!=0", null);
+ db.update(CARRIERS_TABLE, s_currentNullMap, CURRENT + "!=0", null);
- String numeric = initialValues.getAsString(Telephony.Carriers.NUMERIC);
+ String numeric = initialValues.getAsString(NUMERIC);
int updated = db.update(CARRIERS_TABLE, s_currentSetMap,
- "numeric = '" + numeric + "'", null);
+ NUMERIC + " = '" + numeric + "'", null);
if (updated > 0)
{
@@ -1832,7 +1899,7 @@
}
if (notify) {
- getContext().getContentResolver().notifyChange(Telephony.Carriers.CONTENT_URI, null,
+ getContext().getContentResolver().notifyChange(CONTENT_URI, null,
true, UserHandle.USER_ALL);
}
@@ -1845,13 +1912,13 @@
int count = 0;
int subId = SubscriptionManager.getDefaultSubscriptionId();
String userOrCarrierEdited = ") and (" +
- Telephony.Carriers.EDITED + "=" + Telephony.Carriers.USER_EDITED + " or " +
- Telephony.Carriers.EDITED + "=" + Telephony.Carriers.CARRIER_EDITED + ")";
+ EDITED + "=" + USER_EDITED + " or " +
+ EDITED + "=" + CARRIER_EDITED + ")";
String notUserOrCarrierEdited = ") and (" +
- Telephony.Carriers.EDITED + "!=" + Telephony.Carriers.USER_EDITED + " and " +
- Telephony.Carriers.EDITED + "!=" + Telephony.Carriers.CARRIER_EDITED + ")";
+ EDITED + "!=" + USER_EDITED + " and " +
+ EDITED + "!=" + CARRIER_EDITED + ")";
ContentValues cv = new ContentValues();
- cv.put(Telephony.Carriers.EDITED, Telephony.Carriers.USER_DELETED);
+ cv.put(EDITED, USER_DELETED);
checkPermission();
@@ -1910,12 +1977,12 @@
{
// Delete user/carrier edited entries
count = db.delete(CARRIERS_TABLE,
- "(" + Telephony.Carriers._ID + "=?" + userOrCarrierEdited,
+ "(" + _ID + "=?" + userOrCarrierEdited,
new String[] { url.getLastPathSegment() });
// Otherwise mark as user deleted instead of deleting
count += db.update(CARRIERS_TABLE, cv,
- "(" + Telephony.Carriers._ID + "=?" + notUserOrCarrierEdited,
- new String[] { url.getLastPathSegment() });
+ "(" + _ID + "=?" + notUserOrCarrierEdited,
+ new String[]{url.getLastPathSegment() });
break;
}
@@ -1952,7 +2019,7 @@
case URL_PREFERAPN:
case URL_PREFERAPN_NO_UPDATE:
{
- setPreferredApnId((long)-1, subId);
+ setPreferredApnId((long)INVALID_APN_ID, subId);
if ((match == URL_PREFERAPN) || (match == URL_PREFERAPN_USING_SUBID)) count = 1;
break;
}
@@ -1974,7 +2041,7 @@
}
if (count > 0) {
- getContext().getContentResolver().notifyChange(Telephony.Carriers.CONTENT_URI, null,
+ getContext().getContentResolver().notifyChange(CONTENT_URI, null,
true, UserHandle.USER_ALL);
}
@@ -2010,12 +2077,12 @@
case URL_TELEPHONY:
{
- if (!values.containsKey(Telephony.Carriers.EDITED)) {
- values.put(Telephony.Carriers.EDITED, Telephony.Carriers.USER_EDITED);
+ if (!values.containsKey(EDITED)) {
+ values.put(EDITED, USER_EDITED);
}
// Replace on conflict so that if same APN is present in db with edited
- // as Telephony.Carriers.UNEDITED or USER/CARRIER_DELETED, it is replaced with
+ // as UNEDITED or USER/CARRIER_DELETED, it is replaced with
// edited USER/CARRIER_EDITED
count = db.updateWithOnConflict(CARRIERS_TABLE, values, where, whereArgs,
SQLiteDatabase.CONFLICT_REPLACE);
@@ -2038,11 +2105,11 @@
case URL_CURRENT:
{
- if (!values.containsKey(Telephony.Carriers.EDITED)) {
- values.put(Telephony.Carriers.EDITED, Telephony.Carriers.USER_EDITED);
+ if (!values.containsKey(EDITED)) {
+ values.put(EDITED, USER_EDITED);
}
// Replace on conflict so that if same APN is present in db with edited
- // as Telephony.Carriers.UNEDITED or USER/CARRIER_DELETED, it is replaced with
+ // as UNEDITED or USER/CARRIER_DELETED, it is replaced with
// edited USER/CARRIER_EDITED
count = db.updateWithOnConflict(CARRIERS_TABLE, values, where, whereArgs,
SQLiteDatabase.CONFLICT_REPLACE);
@@ -2055,14 +2122,14 @@
throw new UnsupportedOperationException(
"Cannot update URL " + url + " with a where clause");
}
- if (!values.containsKey(Telephony.Carriers.EDITED)) {
- values.put(Telephony.Carriers.EDITED, Telephony.Carriers.USER_EDITED);
+ if (!values.containsKey(EDITED)) {
+ values.put(EDITED, USER_EDITED);
}
// Replace on conflict so that if same APN is present in db with edited
- // as Telephony.Carriers.UNEDITED or USER/CARRIER_DELETED, it is replaced with
+ // as UNEDITED or USER/CARRIER_DELETED, it is replaced with
// edited USER/CARRIER_EDITED
count = db.updateWithOnConflict(CARRIERS_TABLE, values,
- Telephony.Carriers._ID + "=?", new String[] { url.getLastPathSegment() },
+ _ID + "=?", new String[] { url.getLastPathSegment() },
SQLiteDatabase.CONFLICT_REPLACE);
break;
}
@@ -2114,7 +2181,7 @@
break;
default:
getContext().getContentResolver().notifyChange(
- Telephony.Carriers.CONTENT_URI, null, true, UserHandle.USER_ALL);
+ CONTENT_URI, null, true, UserHandle.USER_ALL);
}
}
@@ -2152,11 +2219,16 @@
} catch (SQLException e) {
loge("got exception when deleting to restore: " + e);
}
- setPreferredApnId((long)-1, subId);
+ setPreferredApnId((long) INVALID_APN_ID, subId);
mOpenHelper.initDatabase(db);
}
private synchronized void updateApnDb() {
+ if (!mOpenHelper.apnDbUpdateNeeded()) {
+ log("Skipping apn db update since apn-conf has not changed.");
+ return;
+ }
+
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
// Delete preferred APN for all subIds
@@ -2164,8 +2236,8 @@
// Delete entries in db
try {
- if (VDBG) log("updateApnDb: deleting edited=Telephony.Carriers.UNEDITED entries");
- db.delete(CARRIERS_TABLE, "edited=" + Telephony.Carriers.UNEDITED, null);
+ if (VDBG) log("updateApnDb: deleting edited=UNEDITED entries");
+ db.delete(CARRIERS_TABLE, IS_UNEDITED, null);
} catch (SQLException e) {
loge("got exception when deleting to update: " + e);
}
@@ -2174,7 +2246,7 @@
// Notify listereners of DB change since DB has been updated
getContext().getContentResolver().notifyChange(
- Telephony.Carriers.CONTENT_URI, null, true, UserHandle.USER_ALL);
+ CONTENT_URI, null, true, UserHandle.USER_ALL);
}