Merge "Cold sim issue fix in telephony Provider" into nyc-dev
diff --git a/src/com/android/providers/telephony/MmsProvider.java b/src/com/android/providers/telephony/MmsProvider.java
index 2c7222a..5acfe13 100644
--- a/src/com/android/providers/telephony/MmsProvider.java
+++ b/src/com/android/providers/telephony/MmsProvider.java
@@ -71,6 +71,7 @@
public boolean onCreate() {
setAppOps(AppOpsManager.OP_READ_SMS, AppOpsManager.OP_WRITE_SMS);
mOpenHelper = MmsSmsDatabaseHelper.getInstanceForCe(getContext());
+ TelephonyBackupAgent.DeferredSmsMmsRestoreService.startIfFilesExist(getContext());
return true;
}
diff --git a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
index 6ff0bff..610418e 100644
--- a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
+++ b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
@@ -235,7 +235,7 @@
private static boolean sFakeLowStorageTest = false; // for testing only
static final String DATABASE_NAME = "mmssms.db";
- static final int DATABASE_VERSION = 63;
+ static final int DATABASE_VERSION = 64;
private final Context mContext;
private LowStorageMonitor mLowStorageMonitor;
@@ -902,7 +902,8 @@
"address TEXT," +
"sub_id INTEGER DEFAULT " + SubscriptionManager.INVALID_SUBSCRIPTION_ID + ", " +
"pdu TEXT," + // the raw PDU for this part
- "deleted INTEGER DEFAULT 0);"); // bool to indicate if row is deleted
+ "deleted INTEGER DEFAULT 0," + // bool to indicate if row is deleted
+ "message_body TEXT);"); // message body
db.execSQL("CREATE TABLE attachments (" +
"sms_id INTEGER," +
@@ -1430,6 +1431,22 @@
} finally {
db.endTransaction();
}
+ // fall through
+ case 63:
+ if (currentVersion <= 63) {
+ return;
+ }
+
+ db.beginTransaction();
+ try {
+ upgradeDatabaseToVersion64(db);
+ db.setTransactionSuccessful();
+ } catch (Throwable ex) {
+ Log.e(TAG, ex.getMessage(), ex);
+ break;
+ } finally {
+ db.endTransaction();
+ }
return;
}
@@ -1709,6 +1726,10 @@
db.execSQL("ALTER TABLE " + SmsProvider.TABLE_RAW +" ADD COLUMN deleted INTEGER DEFAULT 0");
}
+ private void upgradeDatabaseToVersion64(SQLiteDatabase db) {
+ db.execSQL("ALTER TABLE " + SmsProvider.TABLE_RAW +" ADD COLUMN message_body TEXT");
+ }
+
@Override
public synchronized SQLiteDatabase getWritableDatabase() {
SQLiteDatabase db = super.getWritableDatabase();
diff --git a/src/com/android/providers/telephony/MmsSmsProvider.java b/src/com/android/providers/telephony/MmsSmsProvider.java
index b2fa117..d5e0ef9 100644
--- a/src/com/android/providers/telephony/MmsSmsProvider.java
+++ b/src/com/android/providers/telephony/MmsSmsProvider.java
@@ -312,6 +312,7 @@
mUseStrictPhoneNumberComparation =
getContext().getResources().getBoolean(
com.android.internal.R.bool.config_use_strict_phone_number_comparation);
+ TelephonyBackupAgent.DeferredSmsMmsRestoreService.startIfFilesExist(getContext());
return true;
}
diff --git a/src/com/android/providers/telephony/SmsProvider.java b/src/com/android/providers/telephony/SmsProvider.java
index 61d0be9..f50f804 100644
--- a/src/com/android/providers/telephony/SmsProvider.java
+++ b/src/com/android/providers/telephony/SmsProvider.java
@@ -92,6 +92,7 @@
setAppOps(AppOpsManager.OP_READ_SMS, AppOpsManager.OP_WRITE_SMS);
mDeOpenHelper = MmsSmsDatabaseHelper.getInstanceForDe(getContext());
mCeOpenHelper = MmsSmsDatabaseHelper.getInstanceForCe(getContext());
+ TelephonyBackupAgent.DeferredSmsMmsRestoreService.startIfFilesExist(getContext());
return true;
}
@@ -209,7 +210,7 @@
case SMS_RAW_MESSAGE:
// before querying purge old entries with deleted = 1
- // purgeDeletedMessagesInRawTable(db);
+ purgeDeletedMessagesInRawTable(db);
qb.setTables("raw");
break;
@@ -687,14 +688,14 @@
break;
case SMS_RAW_MESSAGE:
- /* ContentValues cv = new ContentValues();
+ ContentValues cv = new ContentValues();
cv.put("deleted", 1);
count = db.update(TABLE_RAW, cv, where, whereArgs);
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.d(TAG, "delete: num rows marked deleted in raw table: " + count);
}
notifyIfNotDefault = false;
- break;*/
+ break;
case SMS_RAW_MESSAGE_PERMANENT_DELETE:
count = db.delete(TABLE_RAW, where, whereArgs);
diff --git a/src/com/android/providers/telephony/TelephonyBackupAgent.java b/src/com/android/providers/telephony/TelephonyBackupAgent.java
index 61796a2..5f4acaa 100644
--- a/src/com/android/providers/telephony/TelephonyBackupAgent.java
+++ b/src/com/android/providers/telephony/TelephonyBackupAgent.java
@@ -476,15 +476,9 @@
protected void onHandleIntent(Intent intent) {
try {
mWakeLock.acquire();
- File[] files = getFilesDir().listFiles(new FileFilter() {
- @Override
- public boolean accept(File file) {
- return file.getName().endsWith(SMS_BACKUP_FILE_SUFFIX) ||
- file.getName().endsWith(MMS_BACKUP_FILE_SUFFIX);
- }
- });
+ File[] files = getFilesToRestore(this);
- if (files == null) {
+ if (files == null || files.length == 0) {
return;
}
Arrays.sort(files, mFileComparator);
@@ -525,15 +519,29 @@
super.onDestroy();
}
- public static Intent getIntent(Context context) {
- return new Intent(context, DeferredSmsMmsRestoreService.class);
+ static void startIfFilesExist(Context context) {
+ File[] files = getFilesToRestore(context);
+ if (files == null || files.length == 0) {
+ return;
+ }
+ context.startService(new Intent(context, DeferredSmsMmsRestoreService.class));
+ }
+
+ private static File[] getFilesToRestore(Context context) {
+ return context.getFilesDir().listFiles(new FileFilter() {
+ @Override
+ public boolean accept(File file) {
+ return file.getName().endsWith(SMS_BACKUP_FILE_SUFFIX) ||
+ file.getName().endsWith(MMS_BACKUP_FILE_SUFFIX);
+ }
+ });
}
}
@Override
public void onRestoreFinished() {
super.onRestoreFinished();
- startService(DeferredSmsMmsRestoreService.getIntent(this));
+ DeferredSmsMmsRestoreService.startIfFilesExist(this);
}
private void doRestoreFile(String fileName, FileDescriptor fd) throws IOException {
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index 2278aa3..97e9b69 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -1096,11 +1096,12 @@
addBoolAttribute(parser, "modem_cognitive", map, MODEM_COGNITIVE);
addBoolAttribute(parser, "user_visible", map, USER_VISIBLE);
+ int bearerBitmask = 0;
String bearerList = parser.getAttributeValue(null, "bearer_bitmask");
if (bearerList != null) {
- int bearerBitmask = ServiceState.getBitmaskFromString(bearerList);
- map.put(BEARER_BITMASK, bearerBitmask);
+ bearerBitmask = ServiceState.getBitmaskFromString(bearerList);
}
+ map.put(BEARER_BITMASK, bearerBitmask);
String mvno_type = parser.getAttributeValue(null, "mvno_type");
if (mvno_type != null) {