diff options
Diffstat (limited to 'src/com/android/bluetooth/opp')
-rw-r--r-- | src/com/android/bluetooth/opp/BluetoothOppManager.java | 14 | ||||
-rw-r--r-- | src/com/android/bluetooth/opp/BluetoothOppService.java | 89 |
2 files changed, 100 insertions, 3 deletions
diff --git a/src/com/android/bluetooth/opp/BluetoothOppManager.java b/src/com/android/bluetooth/opp/BluetoothOppManager.java index 849abf36a..b9c0a8a60 100644 --- a/src/com/android/bluetooth/opp/BluetoothOppManager.java +++ b/src/com/android/bluetooth/opp/BluetoothOppManager.java @@ -77,6 +77,8 @@ public class BluetoothOppManager { private String mUriOfSendingFile; + private String mNameOfSendingFile; + private String mMimeTypeOfSendingFiles; private ArrayList<Uri> mUrisOfSendingFiles; @@ -260,6 +262,7 @@ public class BluetoothOppManager { uri = BluetoothOppUtility.generateUri(uri, sendFileInfo); BluetoothOppUtility.putSendFileInfo(uri, sendFileInfo); mUriOfSendingFile = uri.toString(); + mNameOfSendingFile = sendFileInfo.mFileName; storeApplicationData(); } } @@ -357,7 +360,7 @@ public class BluetoothOppManager { return; } insertThread = new InsertShareInfoThread(device, mMultipleFlag, mMimeTypeOfSendingFile, - mUriOfSendingFile, mMimeTypeOfSendingFiles, mUrisOfSendingFiles, + mUriOfSendingFile, mNameOfSendingFile, mMimeTypeOfSendingFiles, mUrisOfSendingFiles, mIsHandoverInitiated); if (mMultipleFlag) { mfileNumInBatch = mUrisOfSendingFiles.size(); @@ -382,6 +385,8 @@ public class BluetoothOppManager { private final String mUri; + private final String mNameOfSingleFile; + private final String mTypeOfMultipleFiles; private final ArrayList<Uri> mUris; @@ -391,13 +396,15 @@ public class BluetoothOppManager { private final boolean mIsHandoverInitiated; public InsertShareInfoThread(BluetoothDevice device, boolean multiple, - String typeOfSingleFile, String uri, String typeOfMultipleFiles, - ArrayList<Uri> uris, boolean handoverInitiated) { + String typeOfSingleFile, String uri, String nameOfSingleFile, + String typeOfMultipleFiles, ArrayList<Uri> uris, + boolean handoverInitiated) { super("Insert ShareInfo Thread"); this.mRemoteDevice = device; this.mIsMultiple = multiple; this.mTypeOfSingleFile = typeOfSingleFile; this.mUri = uri; + this.mNameOfSingleFile = nameOfSingleFile; this.mTypeOfMultipleFiles = typeOfMultipleFiles; this.mUris = uris; this.mIsHandoverInitiated = handoverInitiated; @@ -467,6 +474,7 @@ public class BluetoothOppManager { private void insertSingleShare() { ContentValues values = new ContentValues(); values.put(BluetoothShare.URI, mUri); + values.put(BluetoothShare.FILENAME_HINT, mNameOfSingleFile); values.put(BluetoothShare.MIMETYPE, mTypeOfSingleFile); values.put(BluetoothShare.DESTINATION, mRemoteDevice.getAddress()); if (mIsHandoverInitiated) { diff --git a/src/com/android/bluetooth/opp/BluetoothOppService.java b/src/com/android/bluetooth/opp/BluetoothOppService.java index 945d5475c..f38736513 100644 --- a/src/com/android/bluetooth/opp/BluetoothOppService.java +++ b/src/com/android/bluetooth/opp/BluetoothOppService.java @@ -393,6 +393,7 @@ public class BluetoothOppService extends Service { break; case BluetoothAdapter.STATE_TURNING_OFF: if (V) Log.v(TAG, "Receiver DISABLED_ACTION "); + removePendingTransfer(); mNotifier.updateNotifier(); //FIX: Don't block main thread /* @@ -867,6 +868,94 @@ public class BluetoothOppService extends Service { } } + private void removePendingTransfer() { + if (V) Log.v(TAG, "Remove pending share"); + Cursor cursor = null; + try { + cursor = getContentResolver().query(BluetoothShare.CONTENT_URI, null, null, + null, BluetoothShare._ID); + } catch (SQLiteException e) { + if (cursor != null){ + cursor.close(); + } + cursor = null; + Log.e(TAG, "UpdateThread: " + e); + } catch (CursorWindowAllocationException e) { + cursor = null; + Log.e(TAG, "UpdateThread: " + e); + } + + if (cursor == null) { + return; + } + + cursor.moveToFirst(); + int arrayPos = 0; + boolean isAfterLast = cursor.isAfterLast(); + + while (!isAfterLast || arrayPos < mShares.size()) { + String uriString = cursor.getString(cursor.getColumnIndexOrThrow(BluetoothShare.URI)); + Uri uri; + if (uriString != null) { + uri = Uri.parse(uriString); + Log.d(TAG, "removeShare parsed URI: " + uri); + } else { + uri = null; + Log.e(TAG, "removeShare found null URI at cursor!"); + } + BluetoothOppShareInfo info = new BluetoothOppShareInfo( + cursor.getInt(cursor.getColumnIndexOrThrow(BluetoothShare._ID)), + uri, + cursor.getString(cursor.getColumnIndexOrThrow(BluetoothShare.FILENAME_HINT)), + cursor.getString(cursor.getColumnIndexOrThrow(BluetoothShare._DATA)), + cursor.getString(cursor.getColumnIndexOrThrow(BluetoothShare.MIMETYPE)), + cursor.getInt(cursor.getColumnIndexOrThrow(BluetoothShare.DIRECTION)), + cursor.getString(cursor.getColumnIndexOrThrow(BluetoothShare.DESTINATION)), + cursor.getInt(cursor.getColumnIndexOrThrow(BluetoothShare.VISIBILITY)), + cursor.getInt(cursor.getColumnIndexOrThrow(BluetoothShare.USER_CONFIRMATION)), + cursor.getInt(cursor.getColumnIndexOrThrow(BluetoothShare.STATUS)), + cursor.getLong(cursor.getColumnIndexOrThrow(BluetoothShare.TOTAL_BYTES)), + cursor.getLong(cursor.getColumnIndexOrThrow(BluetoothShare.CURRENT_BYTES)), + cursor.getLong(cursor.getColumnIndexOrThrow(BluetoothShare.TIMESTAMP)), + cursor.getInt(cursor.getColumnIndexOrThrow(Constants.MEDIA_SCANNED)) != Constants.MEDIA_SCANNED_NOT_SCANNED); + + if (V) { + Log.v(TAG, "Service remove entry"); + Log.v(TAG, "ID : " + info.mId); + // Log.v(TAG, "URI : " + ((info.mUri != null) ? "yes" : "no")); + Log.v(TAG, "URI : " + info.mUri); + Log.v(TAG, "HINT : " + info.mHint); + Log.v(TAG, "FILENAME: " + info.mFilename); + Log.v(TAG, "MIMETYPE: " + info.mMimetype); + Log.v(TAG, "DIRECTION: " + info.mDirection); + Log.v(TAG, "DESTINAT: " + info.mDestination); + Log.v(TAG, "VISIBILI: " + info.mVisibility); + Log.v(TAG, "CONFIRM : " + info.mConfirm); + Log.v(TAG, "STATUS : " + info.mStatus); + Log.v(TAG, "TOTAL : " + info.mTotalBytes); + Log.v(TAG, "CURRENT : " + info.mCurrentBytes); + Log.v(TAG, "TIMESTAMP : " + info.mTimestamp); + Log.v(TAG, "SCANNED : " + info.mMediaScanned); + } + + if (info.isReadyToStart()) { + if (info.mDirection == BluetoothShare.DIRECTION_OUTBOUND) { + BluetoothOppSendFileInfo sendFileInfo = BluetoothOppUtility.getSendFileInfo( + info.mUri); + Constants.updateShareStatus(this, info.mId, BluetoothShare.STATUS_BAD_REQUEST); + BluetoothOppUtility.closeSendFileInfo(info.mUri); + } + } + + ++arrayPos; + cursor.moveToNext(); + isAfterLast = cursor.isAfterLast(); + } + cursor.close(); + if (V) Log.v(TAG, "Freeing cursor: " + cursor); + cursor = null; + } + /** * Removes the local copy of the info about a share. */ |