am 9b625616: am 78917c29: am a5f8bac8: am 7ed9c338: Unhide android.provider.Telephony.Sms.SUB_ID
* commit '9b625616c4380691d8994a21801867bd1ffffc59':
Unhide android.provider.Telephony.Sms.SUB_ID
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index f018658..4eedae0 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" product="tablet" msgid="9194799012395299737">"मोबाइल नेटवर्क कॉन्फ़िगरेशन"</string>
- <string name="app_label" product="default" msgid="4282451239358791628">"फ़ोन/संदेश संग्रहण"</string>
+ <string name="app_label" product="default" msgid="4282451239358791628">"फ़ोन/संदेश मेमोरी"</string>
</resources>
diff --git a/src/com/android/providers/telephony/SmsProvider.java b/src/com/android/providers/telephony/SmsProvider.java
index 83a4463..5f0a8af 100644
--- a/src/com/android/providers/telephony/SmsProvider.java
+++ b/src/com/android/providers/telephony/SmsProvider.java
@@ -257,23 +257,32 @@
* Return a Cursor containing just one message from the ICC.
*/
private Cursor getSingleMessageFromIcc(String messageIndexString) {
+ int messageIndex = -1;
try {
- int messageIndex = Integer.parseInt(messageIndexString);
- SmsManager smsManager = SmsManager.getDefault();
- ArrayList<SmsMessage> messages = smsManager.getAllMessagesFromIcc();
-
- SmsMessage message = messages.get(messageIndex);
- if (message == null) {
- throw new IllegalArgumentException(
- "Message not retrieved. ID: " + messageIndexString);
- }
- MatrixCursor cursor = new MatrixCursor(ICC_COLUMNS, 1);
- cursor.addRow(convertIccToSms(message, 0));
- return withIccNotificationUri(cursor);
+ Integer.parseInt(messageIndexString);
} catch (NumberFormatException exception) {
- throw new IllegalArgumentException(
- "Bad SMS ICC ID: " + messageIndexString);
+ throw new IllegalArgumentException("Bad SMS ICC ID: " + messageIndexString);
}
+ ArrayList<SmsMessage> messages;
+ final SmsManager smsManager = SmsManager.getDefault();
+ // Use phone id to avoid AppOps uid mismatch in telephony
+ long token = Binder.clearCallingIdentity();
+ try {
+ messages = smsManager.getAllMessagesFromIcc();
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ if (messages == null) {
+ throw new IllegalArgumentException("ICC message not retrieved");
+ }
+ final SmsMessage message = messages.get(messageIndex);
+ if (message == null) {
+ throw new IllegalArgumentException(
+ "Message not retrieved. ID: " + messageIndexString);
+ }
+ MatrixCursor cursor = new MatrixCursor(ICC_COLUMNS, 1);
+ cursor.addRow(convertIccToSms(message, 0));
+ return withIccNotificationUri(cursor);
}
/**
@@ -608,7 +617,8 @@
*/
private int deleteMessageFromIcc(String messageIndexString) {
SmsManager smsManager = SmsManager.getDefault();
-
+ // Use phone id to avoid AppOps uid mismatch in telephony
+ long token = Binder.clearCallingIdentity();
try {
return smsManager.deleteMessageFromIcc(
Integer.parseInt(messageIndexString))
@@ -618,8 +628,9 @@
"Bad SMS ICC ID: " + messageIndexString);
} finally {
ContentResolver cr = getContext().getContentResolver();
-
cr.notifyChange(ICC_URI, null, true, UserHandle.USER_ALL);
+
+ Binder.restoreCallingIdentity(token);
}
}