summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJessica Wagantall <jwagantall@cyngn.com>2016-03-07 14:54:05 -0800
committerJessica Wagantall <jwagantall@cyngn.com>2016-03-07 14:54:05 -0800
commit5750b11d8b019205dc6cd7b519fd9ad09f32fadb (patch)
treed2f892baaaf9c3fe20cd9f1cfad451e308445e17
parent3f772a0c05a4dee932fc5d0b5bacabb97d795df6 (diff)
parentb93582b6c811b0e58b2014625ccfb7d808fe9665 (diff)
downloadandroid_packages_apps_Bluetooth-5750b11d8b019205dc6cd7b519fd9ad09f32fadb.tar.gz
android_packages_apps_Bluetooth-5750b11d8b019205dc6cd7b519fd9ad09f32fadb.tar.bz2
android_packages_apps_Bluetooth-5750b11d8b019205dc6cd7b519fd9ad09f32fadb.zip
Merge tag 'android-5.1.1_r35' into HEAD
Android 5.1.1 release 35 Change-Id: I5126615a8ec0b2bf8d392ce02f6721617f77185e Ticket: CYNGNOS-1854
-rw-r--r--src/com/android/bluetooth/map/BluetoothMapContentObserver.java70
1 files changed, 69 insertions, 1 deletions
diff --git a/src/com/android/bluetooth/map/BluetoothMapContentObserver.java b/src/com/android/bluetooth/map/BluetoothMapContentObserver.java
index 87918c6d2..84ae711dd 100644
--- a/src/com/android/bluetooth/map/BluetoothMapContentObserver.java
+++ b/src/com/android/bluetooth/map/BluetoothMapContentObserver.java
@@ -44,15 +44,19 @@ import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.IntentFilter.MalformedMimeTypeException;
import android.content.pm.PackageManager;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.text.format.Time;
+import android.os.Build;
import android.os.Binder;
import android.os.Handler;
+import android.os.Message;
+import android.os.ParcelFileDescriptor;
import android.os.Process;
-import android.provider.BaseColumns;
+import android.os.RemoteException;
import android.provider.Telephony;
import android.provider.Telephony.Mms;
import android.provider.Telephony.MmsSms;
@@ -63,6 +67,8 @@ import android.telephony.ServiceState;
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.os.Looper;
@@ -1160,6 +1166,12 @@ public class BluetoothMapContentObserver {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ACTION_MESSAGE_DELIVERY);
intentFilter.addAction(ACTION_MESSAGE_SENT);
+ try{
+ intentFilter.addDataType("message/*");
+ } catch (MalformedMimeTypeException e) {
+ Log.e(TAG, "Wrong mime type!!!", e);
+ }
+
mContext.registerReceiver(this, intentFilter, null, handler);
}
@@ -1310,6 +1322,62 @@ public class BluetoothMapContentObserver {
}
}
+ static public void actionMessageSentDisconnected(Context context, Intent intent, int result) {
+ /* Check permission for message deletion. */
+ if (context.checkCallingOrSelfPermission(android.Manifest.permission.WRITE_SMS)
+ != PackageManager.PERMISSION_GRANTED) {
+ Log.w(TAG, "actionMessageSentDisconnected: Not allowed to delete SMS/MMS messages");
+ EventLog.writeEvent(0x534e4554, "b/22343270", Binder.getCallingUid(), "");
+ return;
+ }
+
+ boolean delete = false;
+ //int retry = intent.getIntExtra(EXTRA_MESSAGE_SENT_RETRY, 0);
+ int transparent = intent.getIntExtra(EXTRA_MESSAGE_SENT_TRANSPARENT, 0);
+ String uriString = intent.getStringExtra(EXTRA_MESSAGE_SENT_URI);
+ if(uriString == null) {
+ // Nothing we can do about it, just bail out
+ return;
+ }
+ Uri uri = Uri.parse(uriString);
+
+ if (result == Activity.RESULT_OK) {
+ Log.d(TAG, "actionMessageSentDisconnected: result OK");
+ if (transparent == 0) {
+ if (!Sms.moveMessageToFolder(context, uri,
+ Sms.MESSAGE_TYPE_SENT, 0)) {
+ Log.d(TAG, "Failed to move " + uri + " to SENT");
+ }
+ } else {
+ delete = true;
+ }
+ } else {
+ /*if (retry == 1) {
+ The retry feature only works while connected, else we fail the send,
+ * and move the message to failed, to let the user/app resend manually later.
+ } else */{
+ if (transparent == 0) {
+ if (!Sms.moveMessageToFolder(context, uri,
+ Sms.MESSAGE_TYPE_FAILED, 0)) {
+ Log.d(TAG, "Failed to move " + uri + " to FAILED");
+ }
+ } else {
+ delete = true;
+ }
+ }
+ }
+
+ if (delete) {
+ /* Delete from DB */
+ ContentResolver resolver = context.getContentResolver();
+ if (resolver != null) {
+ resolver.delete(uri, null, null);
+ } else {
+ Log.w(TAG, "Unable to get resolver");
+ }
+ }
+ }
+
private void registerPhoneServiceStateListener() {
TelephonyManager tm = (TelephonyManager)mContext.getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(mPhoneListener, PhoneStateListener.LISTEN_SERVICE_STATE);