diff options
author | Jessica Wagantall <jwagantall@cyngn.com> | 2016-03-07 14:54:05 -0800 |
---|---|---|
committer | Jessica Wagantall <jwagantall@cyngn.com> | 2016-03-07 14:54:05 -0800 |
commit | 5750b11d8b019205dc6cd7b519fd9ad09f32fadb (patch) | |
tree | d2f892baaaf9c3fe20cd9f1cfad451e308445e17 /src/com/android/bluetooth/map | |
parent | 3f772a0c05a4dee932fc5d0b5bacabb97d795df6 (diff) | |
parent | b93582b6c811b0e58b2014625ccfb7d808fe9665 (diff) | |
download | android_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
Diffstat (limited to 'src/com/android/bluetooth/map')
-rw-r--r-- | src/com/android/bluetooth/map/BluetoothMapContentObserver.java | 70 |
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); |