summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAshwini Munigala <AshwiniM@codeaurora.org>2016-01-12 18:53:14 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-01-12 18:53:14 +0000
commite005c18fa8fd19ef68580c57760e91735e66a48b (patch)
tree17b51cee28601beab339efa59729b59bf705f815 /src
parent0a9659da81c1367bf40a8340ecdff4227f88203b (diff)
parentff7beb91bee0db50b4ce03aba1b39a3362f767c6 (diff)
downloadandroid_packages_apps_Bluetooth-e005c18fa8fd19ef68580c57760e91735e66a48b.tar.gz
android_packages_apps_Bluetooth-e005c18fa8fd19ef68580c57760e91735e66a48b.tar.bz2
android_packages_apps_Bluetooth-e005c18fa8fd19ef68580c57760e91735e66a48b.zip
DO NOT MERGE Fix SMS delivered successfully but stuck SENDING issue am: f81566bb85
am: ff7beb91be * commit 'ff7beb91bee0db50b4ce03aba1b39a3362f767c6': DO NOT MERGE Fix SMS delivered successfully but stuck SENDING issue
Diffstat (limited to 'src')
-rw-r--r--src/com/android/bluetooth/map/BluetoothMapContentObserver.java81
1 files changed, 80 insertions, 1 deletions
diff --git a/src/com/android/bluetooth/map/BluetoothMapContentObserver.java b/src/com/android/bluetooth/map/BluetoothMapContentObserver.java
index 80ef21bea..9aae8cf54 100644
--- a/src/com/android/bluetooth/map/BluetoothMapContentObserver.java
+++ b/src/com/android/bluetooth/map/BluetoothMapContentObserver.java
@@ -48,6 +48,7 @@ import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.telephony.TelephonyManager;
import android.text.format.DateUtils;
+import android.util.EventLog;
import android.util.Log;
import android.util.Xml;
import android.text.TextUtils;
@@ -3006,7 +3007,23 @@ public class BluetoothMapContentObserver {
return;
}
- if (action.equals(ACTION_MESSAGE_DELIVERY)) {
+ if (action.equals(ACTION_MESSAGE_SENT)) {
+ int result = intent.getIntExtra(EXTRA_MESSAGE_SENT_RESULT,
+ Activity.RESULT_CANCELED);
+ msgInfo.partsSent++;
+ if(result != Activity.RESULT_OK) {
+ /* If just one of the parts in the message fails, we need to send the
+ * entire message again
+ */
+ msgInfo.failedSent = true;
+ }
+ if(D) Log.d(TAG, "onReceive: msgInfo.partsSent = " + msgInfo.partsSent
+ + ", msgInfo.parts = " + msgInfo.parts + " result = " + result);
+
+ if (msgInfo.partsSent == msgInfo.parts) {
+ actionMessageSent(context, intent, msgInfo);
+ }
+ } else if (action.equals(ACTION_MESSAGE_DELIVERY)) {
long timestamp = intent.getLongExtra(EXTRA_MESSAGE_SENT_TIMESTAMP, 0);
int status = -1;
if(msgInfo.timestamp == timestamp) {
@@ -3036,6 +3053,67 @@ public class BluetoothMapContentObserver {
}
}
+ private void actionMessageSent(Context context, Intent intent, PushMsgInfo msgInfo) {
+ /* As the MESSAGE_SENT intent is forwarded from the MAP service, we use the intent
+ * to carry the result, as getResult() will not return the correct value.
+ */
+ boolean delete = false;
+
+ if(D) Log.d(TAG,"actionMessageSent(): msgInfo.failedSent = " + msgInfo.failedSent);
+
+ msgInfo.sendInProgress = false;
+
+ if (msgInfo.failedSent == false) {
+ if(D) Log.d(TAG, "actionMessageSent: result OK");
+ if (msgInfo.transparent == 0) {
+ if (!Sms.moveMessageToFolder(context, msgInfo.uri,
+ Sms.MESSAGE_TYPE_SENT, 0)) {
+ Log.w(TAG, "Failed to move " + msgInfo.uri + " to SENT");
+ }
+ } else {
+ delete = true;
+ }
+
+ Event evt = new Event(EVENT_TYPE_SENDING_SUCCESS, msgInfo.id,
+ getSmsFolderName(Sms.MESSAGE_TYPE_SENT), null, mSmsType);
+ sendEvent(evt);
+
+ } else {
+ if (msgInfo.retry == 1) {
+ /* Notify failure, but keep message in outbox for resending */
+ msgInfo.resend = true;
+ msgInfo.partsSent = 0; // Reset counter for the retry
+ msgInfo.failedSent = false;
+ Event evt = new Event(EVENT_TYPE_SENDING_FAILURE, msgInfo.id,
+ getSmsFolderName(Sms.MESSAGE_TYPE_OUTBOX), null, mSmsType);
+ sendEvent(evt);
+ } else {
+ if (msgInfo.transparent == 0) {
+ if (!Sms.moveMessageToFolder(context, msgInfo.uri,
+ Sms.MESSAGE_TYPE_FAILED, 0)) {
+ Log.w(TAG, "Failed to move " + msgInfo.uri + " to FAILED");
+ }
+ } else {
+ delete = true;
+ }
+
+ Event evt = new Event(EVENT_TYPE_SENDING_FAILURE, msgInfo.id,
+ getSmsFolderName(Sms.MESSAGE_TYPE_FAILED), null, mSmsType);
+ sendEvent(evt);
+ }
+ }
+
+ if (delete == true) {
+ /* Delete from Observer message list to avoid delete notifications */
+ synchronized(getMsgListSms()) {
+ getMsgListSms().remove(msgInfo.id);
+ }
+
+ /* Delete from DB */
+ mResolver.delete(msgInfo.uri, null, null);
+ }
+ }
+
private void actionMessageDelivery(Context context, Intent intent, PushMsgInfo msgInfo) {
Uri messageUri = intent.getData();
msgInfo.sendInProgress = false;
@@ -3153,6 +3231,7 @@ public class BluetoothMapContentObserver {
(context.checkCallingOrSelfPermission("android.Manifest.permission.WRITE_SMS")
!= PackageManager.PERMISSION_GRANTED)) {
Log.w(TAG, "actionSmsSentDisconnected: Not allowed to delete SMS/MMS messages");
+ EventLog.writeEvent(0x534e4554, "b/22343270", Binder.getCallingUid(), "");
return;
}