Merge korg/donut into korg/master
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c1af548..33e4a8d 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -21,7 +21,7 @@
<application android:process="com.android.phone"
android:allowClearUserData="false"
- android:label="Dialer Storage"
+ android:label="@string/app_label"
android:icon="@drawable/ic_launcher_phone">
<provider android:name="TelephonyProvider" android:authorities="telephony" android:multiprocess="true" />
<provider android:name="SmsProvider" android:authorities="sms" android:multiprocess="true"
diff --git a/res/values/strings.xml b/res/values/strings.xml
new file mode 100644
index 0000000..c61a41b
--- /dev/null
+++ b/res/values/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- This is the label for the application that stores phone data -->
+ <string name="app_label">Dialer Storage</string>
+
+</resources>
+
diff --git a/src/com/android/providers/telephony/SmsProvider.java b/src/com/android/providers/telephony/SmsProvider.java
index ee60142..39d7013 100644
--- a/src/com/android/providers/telephony/SmsProvider.java
+++ b/src/com/android/providers/telephony/SmsProvider.java
@@ -20,7 +20,7 @@
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.UriMatcher;
-import com.android.internal.database.ArrayListCursor;
+
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
@@ -33,18 +33,20 @@
import android.provider.Telephony.Sms;
import android.provider.Telephony.TextBasedSmsColumns;
import android.provider.Telephony.Threads;
-import android.telephony.gsm.SmsManager;
-import android.telephony.gsm.SmsMessage;
+import android.telephony.SmsManager;
+import android.telephony.SmsMessage;
import android.text.TextUtils;
import android.util.Config;
import android.util.Log;
+import com.android.internal.database.ArrayListCursor;
+
import java.util.ArrayList;
import java.util.HashMap;
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");
+ private static final Uri ICC_URI = Uri.parse("content://sms/icc");
static final String TABLE_SMS = "sms";
private static final String TABLE_RAW = "raw";
private static final String TABLE_SR_PENDING = "sr_pending";
@@ -53,19 +55,19 @@
/**
* These are the columns that are available when reading SMS
- * messages from the SIM. Columns whose names begin with "is_"
+ * messages from the ICC. Columns whose names begin with "is_"
* have either "true" or "false" as their values.
*/
- private final static String[] SIM_COLUMNS = new String[] {
+ private final static String[] ICC_COLUMNS = new String[] {
// N.B.: These columns must appear in the same order as the
- // calls to add appear in convertSimToSms.
+ // calls to add appear in convertIccToSms.
"service_center_address", // getServiceCenterAddress
"address", // getDisplayOriginatingAddress
"message_class", // getMessageClass
"body", // getDisplayMessageBody
"date", // getTimestampMillis
- "status", // getStatusOnSim
- "index_on_sim", // getIndexOnSim
+ "status", // getStatusOnIcc
+ "index_on_icc", // getIndexOnIcc
"is_status_report", // isStatusReportMessage
"transport_type", // Always "sms".
"type" // Always MESSAGE_TYPE_ALL.
@@ -152,8 +154,10 @@
break;
case SMS_CONVERSATIONS:
- qb.setTables("sms, (SELECT thread_id AS group_thread_id, MAX(date) AS group_date, COUNT(*) AS msg_count FROM sms GROUP BY thread_id) AS groups");
- qb.appendWhere("sms.thread_id = groups.group_thread_id AND sms.date = groups.group_date");
+ qb.setTables("sms, (SELECT thread_id AS group_thread_id, MAX(date)AS group_date,"
+ + "COUNT(*) AS msg_count FROM sms GROUP BY thread_id) AS groups");
+ qb.appendWhere("sms.thread_id = groups.group_thread_id AND sms.date ="
+ + "groups.group_date");
qb.setProjectionMap(sConversationProjectionMap);
break;
@@ -187,13 +191,13 @@
qb.appendWhere("(_id = " + url.getPathSegments().get(1) + ")");
break;
- case SMS_ALL_SIM:
- return getAllMessagesFromSim();
+ case SMS_ALL_ICC:
+ return getAllMessagesFromIcc();
- case SMS_SIM:
+ case SMS_ICC:
String messageIndexString = url.getPathSegments().get(1);
- return getSingleMessageFromSim(messageIndexString);
+ return getSingleMessageFromIcc(messageIndexString);
default:
Log.e(TAG, "Invalid request: " + url);
@@ -218,18 +222,18 @@
return ret;
}
- private ArrayList<String> convertSimToSms(SmsMessage message) {
+ private ArrayList<String> convertIccToSms(SmsMessage message) {
ArrayList result = new ArrayList();
// N.B.: These calls must appear in the same order as the
- // columns appear in SIM_COLUMNS.
+ // columns appear in ICC_COLUMNS.
result.add(message.getServiceCenterAddress());
result.add(message.getDisplayOriginatingAddress());
- result.add(message.getMessageClass().toString());
+ result.add(String.valueOf(message.getMessageClass()));
result.add(message.getDisplayMessageBody());
result.add(message.getTimestampMillis());
result.add(Sms.STATUS_NONE);
- result.add(message.getIndexOnSim());
+ result.add(message.getIndexOnIcc());
result.add(message.isStatusReportMessage());
result.add("sms");
result.add(TextBasedSmsColumns.MESSAGE_TYPE_ALL);
@@ -237,13 +241,13 @@
}
/**
- * Return a Cursor containing just one message from the SIM.
+ * Return a Cursor containing just one message from the ICC.
*/
- private Cursor getSingleMessageFromSim(String messageIndexString) {
+ private Cursor getSingleMessageFromIcc(String messageIndexString) {
try {
int messageIndex = Integer.parseInt(messageIndexString);
SmsManager smsManager = SmsManager.getDefault();
- ArrayList<SmsMessage> messages = smsManager.getAllMessagesFromSim();
+ ArrayList<SmsMessage> messages = smsManager.getAllMessagesFromIcc();
ArrayList<ArrayList> singleRow = new ArrayList<ArrayList>();
SmsMessage message = messages.get(messageIndex);
@@ -251,35 +255,34 @@
throw new IllegalArgumentException(
"Message not retrieved. ID: " + messageIndexString);
}
- singleRow.add(convertSimToSms(message));
- return withSimNotificationUri(
- new ArrayListCursor(SIM_COLUMNS, singleRow));
+ singleRow.add(convertIccToSms(message));
+ return withIccNotificationUri(
+ new ArrayListCursor(ICC_COLUMNS, singleRow));
} catch (NumberFormatException exception) {
throw new IllegalArgumentException(
- "Bad SMS SIM ID: " + messageIndexString);
+ "Bad SMS ICC ID: " + messageIndexString);
}
}
/**
- * Return a Cursor listing all the messages stored on the SIM.
+ * Return a Cursor listing all the messages stored on the ICC.
*/
- private Cursor getAllMessagesFromSim() {
+ private Cursor getAllMessagesFromIcc() {
SmsManager smsManager = SmsManager.getDefault();
- ArrayList<SmsMessage> messages = smsManager.getAllMessagesFromSim();
+ ArrayList<SmsMessage> messages = smsManager.getAllMessagesFromIcc();
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(convertIccToSms(message));
}
}
- return withSimNotificationUri(new ArrayListCursor(SIM_COLUMNS, rows));
+ return withIccNotificationUri(new ArrayListCursor(ICC_COLUMNS, rows));
}
- private Cursor withSimNotificationUri(Cursor cursor) {
- cursor.setNotificationUri(getContext().getContentResolver(),
- SIM_URI);
+ private Cursor withIccNotificationUri(Cursor cursor) {
+ cursor.setNotificationUri(getContext().getContentResolver(), ICC_URI);
return cursor;
}
@@ -522,10 +525,10 @@
count = db.delete("sr_pending", where, whereArgs);
break;
- case SMS_SIM:
+ case SMS_ICC:
String messageIndexString = url.getPathSegments().get(1);
- return deleteMessageFromSim(messageIndexString);
+ return deleteMessageFromIcc(messageIndexString);
default:
throw new IllegalArgumentException("Unknown URL");
@@ -538,23 +541,23 @@
}
/**
- * Delete the message at index from SIM. Return true iff
+ * Delete the message at index from ICC. Return true iff
* successful.
*/
- private int deleteMessageFromSim(String messageIndexString) {
+ private int deleteMessageFromIcc(String messageIndexString) {
SmsManager smsManager = SmsManager.getDefault();
try {
- return smsManager.deleteMessageFromSim(
+ return smsManager.deleteMessageFromIcc(
Integer.parseInt(messageIndexString))
? 1 : 0;
} catch (NumberFormatException exception) {
throw new IllegalArgumentException(
- "Bad SMS SIM ID: " + messageIndexString);
+ "Bad SMS ICC ID: " + messageIndexString);
} finally {
ContentResolver cr = getContext().getContentResolver();
- cr.notifyChange(SIM_URI, null);
+ cr.notifyChange(ICC_URI, null);
}
}
@@ -668,8 +671,8 @@
private static final int SMS_QUERY_THREAD_ID = 19;
private static final int SMS_STATUS_ID = 20;
private static final int SMS_STATUS_PENDING = 21;
- private static final int SMS_ALL_SIM = 22;
- private static final int SMS_SIM = 23;
+ private static final int SMS_ALL_ICC = 22;
+ private static final int SMS_ICC = 23;
private static final int SMS_FAILED = 24;
private static final int SMS_FAILED_ID = 25;
private static final int SMS_QUEUED = 26;
@@ -702,9 +705,12 @@
sURLMatcher.addURI("sms", "threadID/*", SMS_QUERY_THREAD_ID);
sURLMatcher.addURI("sms", "status/#", SMS_STATUS_ID);
sURLMatcher.addURI("sms", "sr_pending", SMS_STATUS_PENDING);
- sURLMatcher.addURI("sms", "sim", SMS_ALL_SIM);
- sURLMatcher.addURI("sms", "sim/#", SMS_SIM);
-
+ sURLMatcher.addURI("sms", "icc", SMS_ALL_ICC);
+ sURLMatcher.addURI("sms", "icc/#", SMS_ICC);
+ //we keep these for not breaking old applications
+ sURLMatcher.addURI("sms", "sim", SMS_ALL_ICC);
+ sURLMatcher.addURI("sms", "sim/#", SMS_ICC);
+
sConversationProjectionMap.put(Sms.Conversations.SNIPPET,
"body AS snippet");
sConversationProjectionMap.put("delta", null);