diff options
-rw-r--r-- | AndroidManifest.xml | 4 | ||||
-rw-r--r-- | src/com/android/providers/telephony/MmsSmsDatabaseHelper.java | 4 | ||||
-rw-r--r-- | src/com/android/providers/telephony/SmsProvider.java | 62 | ||||
-rw-r--r-- | src/com/android/providers/telephony/TelephonyProvider.java | 21 |
4 files changed, 36 insertions, 55 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c1af548..dfbf918 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -29,9 +29,7 @@ android:writePermission="android.permission.WRITE_SMS" /> <provider android:name="MmsProvider" android:authorities="mms" android:multiprocess="true" android:readPermission="android.permission.READ_SMS" - android:writePermission="android.permission.WRITE_SMS"> - <grant-uri-permission android:pathPrefix="/part/" /> - </provider> + android:writePermission="android.permission.WRITE_SMS" /> <provider android:name="MmsSmsProvider" android:authorities="mms-sms" android:multiprocess="true" android:readPermission="android.permission.READ_SMS" android:writePermission="android.permission.WRITE_SMS" /> diff --git a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java index 31d7cb7..1644186 100644 --- a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java +++ b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java @@ -230,10 +230,6 @@ public class MmsSmsDatabaseHelper extends SQLiteOpenHelper { } c.close(); } - // remove orphaned threads - db.delete("threads", - "_id NOT IN (SELECT DISTINCT thread_id FROM sms " + - "UNION SELECT DISTINCT thread_id FROM pdu)", null); } public static int deleteOneSms(SQLiteDatabase db, int message_id) { diff --git a/src/com/android/providers/telephony/SmsProvider.java b/src/com/android/providers/telephony/SmsProvider.java index ee60142..56b39de 100644 --- a/src/com/android/providers/telephony/SmsProvider.java +++ b/src/com/android/providers/telephony/SmsProvider.java @@ -46,9 +46,7 @@ public class SmsProvider extends ContentProvider { private static final Uri NOTIFICATION_URI = Uri.parse("content://sms"); private static final Uri SIM_URI = Uri.parse("content://sms/sim"); static final String TABLE_SMS = "sms"; - private static final String TABLE_RAW = "raw"; - private static final String TABLE_SR_PENDING = "sr_pending"; - + private static final Integer ONE = Integer.valueOf(1); /** @@ -246,12 +244,7 @@ public class SmsProvider extends ContentProvider { ArrayList<SmsMessage> messages = smsManager.getAllMessagesFromSim(); ArrayList<ArrayList> singleRow = new ArrayList<ArrayList>(); - SmsMessage message = messages.get(messageIndex); - if (message == null) { - throw new IllegalArgumentException( - "Message not retrieved. ID: " + messageIndexString); - } - singleRow.add(convertSimToSms(message)); + singleRow.add(convertSimToSms(messages.get(messageIndex))); return withSimNotificationUri( new ArrayListCursor(SIM_COLUMNS, singleRow)); } catch (NumberFormatException exception) { @@ -269,10 +262,7 @@ public class SmsProvider extends ContentProvider { ArrayList<ArrayList> rows = new ArrayList<ArrayList>(); for (int count = messages.size(), i = 0; i < count; i++) { - SmsMessage message = messages.get(i); - if (message != null) { - rows.add(convertSimToSms(message)); - } + rows.add(convertSimToSms(messages.get(i))); } return withSimNotificationUri(new ArrayListCursor(SIM_COLUMNS, rows)); } @@ -562,17 +552,14 @@ public class SmsProvider extends ContentProvider { public int update( Uri url, ContentValues values, String where, String[] whereArgs) { int count = 0; - String table = TABLE_SMS; - String extraWhere = null; SQLiteDatabase db = mOpenHelper.getWritableDatabase(); - switch (sURLMatcher.match(url)) { case SMS_RAW_MESSAGE: - table = TABLE_RAW; + count = db.update("raw", values, where, whereArgs); break; case SMS_STATUS_PENDING: - table = TABLE_SR_PENDING; + count = db.update("sr_pending", values, where, whereArgs); break; case SMS_ALL: @@ -583,10 +570,17 @@ public class SmsProvider extends ContentProvider { case SMS_DRAFT: case SMS_OUTBOX: case SMS_CONVERSATIONS: + count = db.update( + TABLE_SMS, values, where, whereArgs); break; case SMS_ALL_ID: - extraWhere = "_id=" + url.getPathSegments().get(0); + if (where != null) { + throw new UnsupportedOperationException( + "WHERE not supported"); + } + count = db.update(TABLE_SMS, values, "_id=" + + url.getPathSegments().get(0), null); break; case SMS_INBOX_ID: @@ -594,25 +588,40 @@ public class SmsProvider extends ContentProvider { case SMS_SENT_ID: case SMS_DRAFT_ID: case SMS_OUTBOX_ID: - extraWhere = "_id=" + url.getPathSegments().get(1); + if (where != null) { + throw new UnsupportedOperationException( + "WHERE not supported for this URI"); + } + count = db.update(TABLE_SMS, values, "_id=" + + url.getPathSegments().get(1), null); break; case SMS_CONVERSATIONS_ID: { - String threadId = url.getPathSegments().get(1); + int threadId; try { - Integer.parseInt(threadId); + threadId = Integer.parseInt(url.getPathSegments().get(1)); } catch (Exception ex) { - Log.e(TAG, "Bad conversation thread id: " + threadId); + Log.e(TAG, "Bad conversation thread id: " + + url.getPathSegments().get(1)); + count = 0; break; } - extraWhere = "thread_id=" + threadId; + if (where != null) { + throw new UnsupportedOperationException( + "WHERE not supported for this URI"); + } + count = db.update( + TABLE_SMS, values, "thread_id = " + threadId, + null); break; } case SMS_STATUS_ID: - extraWhere = "_id=" + url.getPathSegments().get(1); + String idString = url.getPathSegments().get(1); + + count = db.update(TABLE_SMS, values, "_id=" + idString, null); break; default: @@ -620,9 +629,6 @@ public class SmsProvider extends ContentProvider { "URI " + url + " not supported"); } - where = DatabaseUtils.concatenateWhere(where, extraWhere); - count = db.update(table, values, where, whereArgs); - if (count > 0) { notifyChange(url); } diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java index 324d007..95018be 100644 --- a/src/com/android/providers/telephony/TelephonyProvider.java +++ b/src/com/android/providers/telephony/TelephonyProvider.java @@ -48,7 +48,6 @@ public class TelephonyProvider extends ContentProvider private static final int URL_TELEPHONY = 1; private static final int URL_CURRENT = 2; private static final int URL_ID = 3; - private static final int URL_RESTOREAPN = 4; private static final String TAG = "TelephonyProvider"; private static final String CARRIERS_TABLE = "carriers"; @@ -63,7 +62,6 @@ public class TelephonyProvider extends ContentProvider s_urlMatcher.addURI("telephony", "carriers", URL_TELEPHONY); s_urlMatcher.addURI("telephony", "carriers/current", URL_CURRENT); s_urlMatcher.addURI("telephony", "carriers/#", URL_ID); - s_urlMatcher.addURI("telephony", "carriers/restore", URL_RESTOREAPN); s_currentNullMap = new ContentValues(1); s_currentNullMap.put("current", (Long) null); @@ -124,10 +122,6 @@ public class TelephonyProvider extends ContentProvider "type TEXT," + "current INTEGER);"); - initDatabase(db); - } - - private void initDatabase(SQLiteDatabase db) { // Read internal APNS data Resources r = mContext.getResources(); XmlResourceParser parser = r.getXml(com.android.internal.R.xml.apns); @@ -435,12 +429,6 @@ public class TelephonyProvider extends ContentProvider break; } - case URL_RESTOREAPN: { - count = 1; - restoreDefaultAPN(); - break; - } - default: { throw new UnsupportedOperationException("Cannot delete that URL: " + url); } @@ -486,7 +474,7 @@ public class TelephonyProvider extends ContentProvider new String[] { url.getLastPathSegment() }); break; } - + default: { throw new UnsupportedOperationException("Cannot update that URL: " + url); } @@ -506,11 +494,4 @@ public class TelephonyProvider extends ContentProvider } private SQLiteOpenHelper mOpenHelper; - - private void restoreDefaultAPN() { - SQLiteDatabase db = mOpenHelper.getWritableDatabase(); - - db.delete(CARRIERS_TABLE, null, null); - ((DatabaseHelper) mOpenHelper).initDatabase(db); - } } |